Systems and methods for classifying and transferring information in a storage network

ABSTRACT

Systems and methods for data classification to facilitate and improve data management within an enterprise are described. The disclosed systems and methods evaluate and define data management operations based on data characteristics rather than data location, among other things. Also provided are methods for generating a data structure of metadata that describes system data and storage operations. This data structure may be consulted to determine changes in system data rather than scanning the data files themselves.

CROSS-REFERENCE TO RELATED APPLICATION(S)

This application claims the benefit of U.S. Provisional Application No.60/740,686, entitled SYSTEMS AND METHODS FOR CLASSIFYING INFORMATION INA STORAGE NETWORK, filed Nov. 28, 2005, and U.S. Provisional ApplicationNo. 60/752,203, entitled SYSTEMS AND METHODS FOR CLASSIFYING ANDTRANSFERRING INFORMATION IN A STORAGE NETWORK, filed Dec. 19, 2005, bothof which are hereby incorporated herein by reference in their entirety.

This application is related to the following patents and pending U.S.applications, each of which is hereby incorporated herein by referencein its entirety:

-   -   application Ser. No. 09/354,058, titled HIERARCHICAL BACKUP AND        RETRIEVAL SYSTEM, filed Jul. 15, 1999;    -   U.S. Pat. No. 6,418,478, titled PIPELINED HIGH SPEED DATA        TRANSFER MECHANISM, issued Jul. 9, 2002;    -   application Ser. No. 09/610,738, titled MODULAR BACKUP AND        RETRIEVAL SYSTEM USED IN CONJUNCTION WITH A STORAGE AREA        NETWORK, filed Jul. 6, 2000;    -   U.S. Pat. No. 6,542,972 titled LOGICAL VIEW AND ACCESS TO        PHYSICAL STORAGE IN MODULAR DATA AND STORAGE MANAGEMENT SYSTEM,        issued Apr. 1, 2003;    -   U.S. Pat. No. 6,658,436, titled LOGICAL VIEW AND ACCESS TO DATA        MANAGE BY A MODULAR DATA AND STORAGE MANAGEMENT SYSTEM, issued        Dec. 2, 2003;    -   application Ser. No. 10/658,095, titled DYNAMIC STORAGE DEVICE        POOLING IN A COMPUTER SYSTEM, filed Sep. 9, 2003;    -   application Ser. No. 10/262,556, titled METHOD FOR MANAGING        SNAPSHOTS GENERATED BY AN OPERATING SYSTEM OR OTHER APPLICATION,        filed Sep. 30, 2002;    -   application Ser. No. 10/818,749, SYSTEM AND METHOD FOR        DYNAMICALLY PERFORMING STORAGE OPERATIONS IN A COMPUTER NETWORK,        filed Apr. 5, 2004;    -   application Ser. No. 10/877,831, HIERARCHICAL SYSTEM AND METHOD        FOR PERFORMING STORAGE OPERATIONS IN A COMPUTER NETWORK, filed        Jun. 25, 2004;    -   Application entitled SYSTEM AND METHOD FOR CONTAINERIZED DATA        STORAGE AND TRACKING, filed Dec. 19, 2005, Ser. No. 11/313,256    -   Application Ser. No. 60/752,198, entitled “Systems and Methods        for Granular Resource Management in a Storage Network” filed        Dec. 19, 2005,    -   application Ser. No. 11/313,224, entitled “Systems and Methods        for Performing Multi-Path Storage Operations” filed Dec. 19,        2005,    -   Application Ser. No. 60/752,196, entitled “Systems and Methods        for Migrating Components in a Hierarchical Storage Network”        filed Dec. 19, 2005,    -   Application Ser. No. 60/752,202, entitled “Systems and Methods        for Unified Reconstruction of Data in a Storage Network” filed        Dec. 19, 2005,    -   Application Ser. No. 60/752,201, entitled “Systems and Methods        for Resynchronizing Storage Operations” filed Dec. 19, 2005,    -   Application Ser. No. 60/752,197, entitled “Systems and Methods        for Hierarchical Client Group Management” filed Dec. 19, 2005,

BACKGROUND

Aspects of the invention disclosed herein relate generally to performingoperations on electronic data in a computer network. More particularly,aspects of the present invention relate to detecting data interactionswithin a computer network and/or performing storage-related operationsfor a computer network according to a specified classification paradigm.

Current storage management systems employ a number of different methodsto perform storage operations on electronic data. For example, data canbe stored in primary storage as a primary copy or in secondary storageas various types of secondary copies including, as a backup copy, asnapshot copy, a hierarchical storage management copy (“HSM”), as anarchive copy, and as other types of copies.

A primary copy of data is generally a production copy or other “live”version of the data which is used by a software application and isgenerally in the native format of that application. Primary copy datamay be maintained in a local memory or other high-speed storage devicethat allows for relatively fast data access if necessary. Such primarycopy data is typically intended for short term retention (e.g., severalhours or days) before some or all of the data is stored as one or moresecondary copies, for example to prevent loss of data in the event aproblem occurred with the data stored in primary storage.

Secondary copies include point-in-time data and are typically forintended for long-term retention (e.g., weeks, months or years dependingon retention criteria, for example as specified in a storage policy asfurther described herein) before some or all of the data is moved toother storage or discarded. Secondary copies may be indexed so users canbrowse and restore the data at another point in time. After certainprimary copy data is backed up, a pointer or other location indicia suchas a stub may be placed in the primary copy to indicate the currentlocation of that data.

One type of secondary copy is a backup copy. A backup copy is generallya point-in-time copy of the primary copy data stored in a backup formatas opposed to in native application format. For example, a backup copymay be stored in a backup format that is optimized for compression andefficient long-term storage. Backup copies generally have relativelylong retention periods and may be stored on media with slower retrievaltimes than other types of secondary copies and media. In some cases,backup copies may be stored at on offsite location.

Another form of secondary copy is a snapshot copy. From an end-userviewpoint, a snapshot may be thought as an instant image of the primarycopy data at a given point in time. A snapshot generally captures thedirectory structure of a primary copy volume at a particular moment intime, and also preserves file attributes and contents. In someembodiments, a snapshot may exist as a virtual file system, parallel tothe actual file system. Users typically gain a read-only access to therecord of files and directories of the snapshot. By electing to restoreprimary copy data from a snapshot taken at a given point in time, usersmay also return the current file system to the prior state of the filesystem that existed when the snapshot was taken.

A snapshot may be created instantly, using a minimum of file space, butmay still function as a conventional file system backup. A snapshot maynot actually create another physical copy of all the data, but maysimply create pointers that are able to map files and directories tospecific disk blocks.

In some embodiments, once a snapshot has been taken, subsequent changesto the file system typically do not overwrite the blocks in use at thetime of snapshot. Therefore, the initial snapshot may use only a smallamount of disk space needed to record a mapping or other data structurerepresenting or otherwise tracking the blocks that correspond to thecurrent state of the file system. Additional disk space is usually onlyrequired when files and directories are actually modified later.Furthermore, when files are modified, typically only the pointers whichmap to blocks are copied, not the blocks themselves. In someembodiments, for example in the case of copy-on-write snapshots, when ablock changes in primary storage, the block is copied to secondarystorage before the block is overwritten in primary storage and thesnapshot mapping of file system data is updated to reflect the changedblock(s) at that particular point in time. An HSM copy is generally acopy of the primary copy data, but typically includes only a subset ofthe primary copy data that meets a certain criteria and is usuallystored in a format other than the native application format. Forexample, an HSM copy might include only that data from the primary copythat is larger than a given size threshold or older than a given agethreshold and that is stored in a backup format. Often, HSM data isremoved from the primary copy, and a stub is stored in the primary copyto indicate its new location. When a user requests access to the HSMdata that has been removed or migrated, systems use the stub to locatethe data and often make recovery of the data appear transparent eventhough the HSM data may be stored at a location different from theremaining primary copy data.

An archive copy is generally similar to an HSM copy, however, the datasatisfying criteria for removal from the primary copy is generallycompletely removed with no stub left in the primary copy to indicate thenew location (i.e., where it has been moved to). Archive copies of dataare generally stored in a backup format or other non-native applicationformat. In addition, archive copies are generally retained for very longperiods of time (e.g., years) and in some cases are never deleted. Sucharchive copies may be made and kept for extended periods in order tomeet compliance regulations or for other permanent storage applications.

In some embodiments, application data over its lifetime moves from moreexpensive quick access storage to less expensive slower access storage.This process of moving data through these various tiers of storage issometimes referred to as information lifecycle management (“ILM”). Thisis the process by which data is “aged” from more forms of secondarystorage with faster access/restore times down through less expensivesecondary storage with slower access/restore times, for example, as thedata becomes less important or mission critical over time.

Examples of various types of data and copies of data are furtherdescribed in the above-referenced related applications that are herebyincorporated by reference in their entirety. One example of a systemthat performs storage operations on electronic data that produce suchcopies is the QiNetix storage management system by CommVault Systems ofOceanport, N.J.

The QiNetix system leverages a modular storage management architecturethat may include, among other things, storage manager components, clientor data agent components, and media agent components as furtherdescribed in U.S. patent application Ser. No. 10/818,749 which is herebyincorporated herein by reference in its entirety. The QiNetix systemalso may be hierarchically configured into backup cells to store andretrieve backup copies of electronic data as further described in U.S.patent application Ser. No. 09/354,058 which is hereby incorporated byreference in its entirety.

Regardless of where data is stored, conventional storage managementsystems perform storage operations associated with electronic data basedon location-specific criteria. For example, data generated byapplications running on a particular client is typically copiedaccording to location-specific criteria, such as from a certain locationsuch as a specific folder or subfolder, according to a specified datapath, etc. A module installed on the client or elsewhere in the systemmay supervise the transfer of data from the client to another locationin a primary or secondary storage. Similar data transfers associatedwith location-specific criteria are performed when restoring data fromsecondary storage to primary storage. For example, to restore data, auser or system process must specify a particular secondary storagedevice, piece of media, archive file, etc. Thus, the precision withwhich conventional storage management systems perform storage operationson electronic data is generally limited by the ability to define orspecify storage operations based on data location rather thaninformation relating to or describing the data itself.

Moreover, when identifying data objects, such as files associated withperforming storage operations, conventional storage systems often scanthe file system of a client or other computing device to determine whichdata objects on the client should be associated with the storageoperation. This may involve collecting file and/or folder attributes bytraversing the file system of the client prior to performing storageoperations. This process is typically time-consuming and usessignificant client resources that might be more desirably spentperforming other tasks associated with production applications. There isthus a need for systems and methods for performing more precise andefficient storage operations.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention is illustrated in the figures of the accompanying drawingswhich are meant to be exemplary and not limiting, in which likereferences are intended to refer to like or corresponding parts, and inwhich:

FIG. 1 is a flow chart in accordance with an embodiment of the presentinvention;

FIG. 2 is a system constructed in accordance with an embodiment of thepresent invention;

FIG. 3 a is a system constructed in accordance with an embodiment of thepresent invention;

FIG. 3 b is a flow chart in accordance with an embodiment of the presentinvention;

FIG. 4 is a flow chart in accordance with an embodiment of the presentinvention;

FIG. 5 is a system constructed in accordance with an embodiment of thepresent invention;

FIG. 6 is a flow chart in accordance with an embodiment of the presentinvention;

FIG. 7 is a system constructed in accordance with an embodiment of thepresent invention;

FIG. 8 is a flow chart in accordance with an embodiment of the presentinvention;

FIG. 9 is a system constructed in accordance with an embodiment of thepresent invention;

FIG. 10 is a flow chart in accordance with an embodiment of the presentinvention;

FIG. 11 is a flow chart in accordance with an embodiment of the presentinvention;

FIG. 11 a is a system constructed in accordance with an embodiment ofthe present invention;

FIG. 12 is a flow chart in accordance with an embodiment of the presentinvention;

FIG. 13 is a system constructed in accordance with an embodiment of thepresent invention;

FIG. 14 is a flow chart in accordance with an embodiment of the presentinvention;

FIG. 15 is a system constructed in accordance with an embodiment of thepresent invention;

FIG. 16 is a data arrangement in accordance with an embodiment of thepresent invention;

FIG. 17 is a flow chart in accordance with an embodiment of the presentinvention;

FIG. 18 is a system constructed in accordance with an embodiment of thepresent invention;

FIG. 19 is a flow chart in accordance with an embodiment of the presentinvention; and

FIG. 20 is a flow chart in accordance with an embodiment of the presentinvention.

COPYRIGHT NOTICE

A portion of the disclosure of this patent document contains materialthat is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patent documentor the patent disclosures, as it appears in the Patent and TrademarkOffice patent files or records, but otherwise reserves all copyrightrights whatsoever.

DETAILED DESCRIPTION

Aspects of the present invention are generally concerned with systemsand methods that analyze and classify various forms of data that, amongother things, facilitates identification, searching, storage andretrieval of data that satisfies certain criteria. Although described inconnection with certain specific embodiments, it will be understood thatthe inventions disclosed herein have broad-based applicability to anywireless or hard-wired network or data transfer system that stores andconveys data from one point to another, including communicationnetworks, enterprise networks, storage networks, and the like.

Aspects of the present invention provide systems and methods for dataclassification to facilitate and improve data management within anenterprise. The disclosed systems and methods evaluate and define datamanagement operations based on data characteristics rather than datalocation, among other things. Also provided are methods for generating adata structure of metadata that describes system data and storageoperations. This data structure may be consulted to determine changes insystem data rather than scanning the data files themselves.

Generally, the systems and methods described in detail below are foranalyzing data and other information in a computer network (sometimesreferred to herein as a “data object”) and creating a database or indexof information which may describe certain pertinent aspects of the dataobjects that allow a user or system process to consult the database toobtain information regarding the network data. For example, a datacollection agent may traverse a network file system and obtain certaincharacteristics and other attributes of data in the system. In someembodiments, such a database may be a collection of metadata and/orother information regarding the network data and may be referred toherein as a “metabase.” Generally, metadata refers to data orinformation about data, and may include, for example, data relating tostorage operations or storage management, such as data locations,storage management components associated with data, storage devices usedin performing storage operations, index data, data application type, orother data.

With this arrangement, if it is desired to obtain information regardingnetwork data, a system administrator or system process may simplyconsult the metabase for such information rather than iteratively accessand analyze each data item in the network. Thus, this significantlyreduces the amount of time required to obtain data object information bysubstantially eliminating the need to obtain information from the sourcedata, and furthermore minimizes the involvement of network resources inthis process, substantially reducing the processing burden on the hostsystem.

Various embodiments of the invention will now be described. Thefollowing description provides specific details for a thoroughunderstanding and enabling description of these embodiments. One skilledin the art will understand, however, that the invention may be practicedwithout many of these details. Additionally, some well-known structuresor functions may not be shown or described in detail, so as to avoidunnecessarily obscuring the relevant description of the variousembodiments.

The terminology used in the description presented below is intended tobe interpreted in its broadest reasonable manner, even though it isbeing used in conjunction with a detailed description of certainspecific embodiments of the invention. Certain terms may even beemphasized below; however, any terminology intended to be interpreted inany restricted manner will be overtly and specifically defined as suchin this Detailed Description section.

A flow chart 100 illustrating some of the steps associated with oneembodiment of the present invention is shown in FIG. 1. In order toperform some of the functions described herein, it may be necessary atthe outset to install certain data classification software or dataclassification agents on computing devices within at least parts of thenetwork (step 102). This may be done, for example, by installingclassification software on client computers and/or servers within agiven network. In some embodiments, classification agents may beinstalled globally on a computing device or with respect to certainsubsystems on a computing device. The classification software maymonitor certain information regarding data objects generated by thecomputers and classify this information for use as further describedherein.

Next, at step 104, a monitor agent may be initialized. Such a monitoringagent may be resident or installed on each computing device similar tothe deployment of classification agents described above and may beconfigured to monitor and record certain data interactions within eachmachine or process. For example, the monitor agent may include a filterdriver program and may be deployed on an input/output port or data stackand operate in conjunction with a file management program to recordinteractions with computing device data. This may involve creating adata structure such as a record or journal of each interaction. Therecords may be stored in a journal data structure and may chronicle datainteractions on an interaction by interaction basis. The journal mayinclude information regarding the type of interaction that has occurredalong with certain relevant properties of the data involved in theinteraction. One example of such a monitor program may includeMicrosoft's Change Journal or similar program.

Prior to populating a metabase with metadata, the portions of thenetwork or subject system may be quiesced such that no data interactionsare permitted prior to completing an optional scan of system files asdescribed in conjunction with step 106 below. This may be done in orderto obtain an accurate point in time picture of the data being scannedand to maintain referential integrity within the system. For example, ifthe system were not quiesced, data interactions would continue and beallowed to pass through to mass storage and thus data would change.However, in some embodiments, the subject system may be allowed tocontinue to operate, with operations or instructions queued in a cache.These operations are typically performed after the scan is complete sothat any such data interactions occur based on the cached operations arecaptured by the monitor agent.

Generally, the file scanning of step 106 may be performed by a dataclassification agent and may include traversing the file system of aclient to identify data objects or other files, email or otherinformation currently stored or present in the system and obtain certaininformation regarding the information such as any available metadata.Such metadata may include information about data objects orcharacteristics associated with data objects such as the data owner(e.g., the client or user that generates the data or other datamanager), the last modified time (e.g., the time of the most recentmodification), the data size (e.g., number of bytes of data),information about the data content (e.g., the application that generatedthe data, the user that generated the data, etc.), to/from informationfor email (e.g., an email sender, recipient or individual or group on anemail distribution list), creation date (e.g., the date on which thedata object was created), file type (e.g., format or application type),last accessed time (e.g., the time the data object was most recentlyaccessed or viewed), application type (e.g., the application whichgenerated the data object), location/network (e.g., a current, past orfuture location of the data object and network pathways to/from the dataobject), frequency of change (e.g., a period in which the data object ismodified), business unit (e.g., a group or department that generates,manages or is otherwise associated with the data object), and aginginformation (e.g., a schedule, which may include a time period, in whichthe data object is migrated to secondary or long term storage), etc. Theinformation obtained in the scanning process may be used to initiallypopulate the metabase of information regarding network data at step 108.

After the metabase has been populated, the network or subject system maybe released from the quiesced state and normal operation may resume.Next, at step 110, the monitor agent may monitor system operations torecord changes to system data in the change journal database asdescribed above. The change journal database may include a database ofmetadata or data changes and may comprise log files of the data ormetadata changes. In some embodiments, the data classification agent mayperiodically consult the change journal database for new entries. If newentries exist, these entries may be examined, and if deemed relevant,then analyzed, parsed, and written to the metabase as an update (step112). In other embodiments, change journal entries may be suppliedsubstantially in parallel to the journal database and dataclassification agent. This allows the metabase to maintain substantiallycurrent information regarding the state of system data at any givenpoint in time.

As mentioned above, one benefit of such a metabase is it significantlyreduces the amount of time required to obtain information bysubstantially eliminating the need to obtain information directly fromthe source data. For example, assume a system administrator desires toidentify data objects that a certain user has interacted with thatcontain certain content or other characteristics. Rather than searcheach file in each directory, a very time consuming process, theadministrator may simply search the metabase to identify such dataobjects and any properties associated with those objects, (e.g.,metadata, which may include location, size, etc.), resulting insignificant time savings.

Moreover, use of the metabase for satisfying data queries also minimizesthe involvement of network resources in this process, substantiallyreducing any processing burden on the host system. For example, asdescribed above, if an administrator desires to identify certain dataobjects, querying the metabase rather than the file system virtuallyremoves the host system from the query process (i.e., no brute forcescanning of directories and files required), allowing host computingdevices to continue performing host tasks rather than be occupied withsearch tasks.

FIG. 2 shows one embodiment of a client 200 constructed in accordancewith principles of the present invention. As shown, client 200 mayinclude a classification agent 202 and a monitor agent 206, which, insome embodiments, may be combined as an update agent 204, and which maybe a single module encompassing the functionality of both agents. Client200 may also include an internal or external data store 209, metabase210, and change record 212.

Generally, client 200 may be a computing device, or any portion of acomputing device that generates electronic data. Data store 209generally represents application data such as production volume dataused by client 200. Metabase 210, which may be internal or external toclient 200 may contain information generated by classification agent 202as described above. Similarly, change journal 212, which also may beinternal or external to client 200, may contain information generated bymonitor agent 206 as described above.

In operation, data interactions occurring within client 200 may bemonitored with update agent 204 or monitor agent 206. Any relevantinteraction may be recorded and written to change record 206. Dataclassification agent 202 may scan or receive entries from monitor agent206 and update metabase 210 accordingly. Moreover, in the case whereupdate agent 204 is present, monitored data interactions may beprocessed in parallel with updates to change record 212 and written todata store 208 and metabase 210 occurring accordingly. A file system 207may be used to conduct or process data from the client to a data store209.

FIG. 3 a provides a more detailed view of the journaling andclassification mechanisms of client 200 generally shown in FIG. 2. Asshown, system 300 may include a memory 302, an update agent 304 whichmay include a separate or integrated monitor agent 306, classificationagents 312 a and 312 b, a content agent 315, a monitor program index310, metabase 314 and mass storage device 318.

In operation, data interactions that occur between memory 302 and massstorage device 318 may be monitored by monitor agent 306. In someembodiments, memory 302 may include random access memory (RAM) or othermemory device employed by a computer in client 200 in performing dataprocessing tasks. Certain information from memory 302 may beperiodically read or written to mass storage device 318 which mayinclude a magnetic or optical disk drive such as a hard drive or otherstorage device known in the art. Such data interactions are monitored bymonitoring agent 306 which, in some embodiments, may include anysuitable monitoring or journaling agent as further described herein.

As shown, system 300 may also include an administrative file systemprogram 316, such as a file system program known in the art, which mayinclude operating system programs, a FAT, an NTFS, etc. that may be usedto manage data movement to and from mass storage device 318. Thus, inoperation, data may be written from memory 302 to mass storage device318 via file system program 316. Such an operation may occur, forexample, to access data used to service an application running on acomputing device. During this operation, monitor agent 306 may capturethis interaction and generate a record indicating that an interactionhas occurred and store the record in index 310. The data may be storedin mass storage 318 under the supervision of file system manager 316.

As shown in FIG. 3 a, monitor agent 306 may analyze data interactionssuch as interactions between memory 302 and mass storage 318 via thefile system manager 316, and record any such interactions in monitorindex 310. Thus, as described above, monitor index 310 may represent alist of data interactions wherein each entry represents a change thathas occurred to client data along with certain information regarding theinteraction. In embodiments where Microsoft Change Journal or othersimilar software is used, such entries may include a unique identifiersuch as an update sequence number (USN), certain change journal reasoncodes identifying information associated with a reason(s) for the changemade, along with data or metadata describing the data and certain dataproperties, data copy types, etc.

Thus, in operation, as data moves from memory 302 to mass storage 318(or vice versa), monitor agent 304 may create and write an entry toindex 310 which may in turn, be analyzed and classified byclassification agent 312 b for entry in metabase 314. In someembodiments, classification agent 312 a may be coupled with mass storagedevice (either directly or through file system manager 316) and writemetadata entries to both metabase 314 and mass storage device 318. Insome embodiments, the metabase information may be stored on mass storagedevice 318. Moreover, in an alternate embodiment, classification agent312 b may periodically copy or backup metabase 314 to the storage deviceunder the direction of a storage manager and/or pursuant to a storagepolicy (not shown) such that the information in metabase 314 may bequickly restored if lost, deleted or is otherwise unavailable.

In some embodiments, optional classification agent 312 a may operate inconjunction with monitor agent 306 such that data moving to mass storagedevice 318 is classified as further described herein and written todevice 318. With this arrangement, the data, along with the processedmetadata describing that data, is written to mass storage device 318.This may occur, for example in embodiments in which monitor agent 306and classification agent 312 a are combined into update agent 304.Writing metadata in this way allows it to be recovered or accessed frommass storage device 318 if necessary, for example, when metabase 314 ismissing certain information, busy, or otherwise inaccessible.

Content agent 315 may be generally used to obtain or filter datarelating to content of the data moving from memory 302 to mass storage318. For example, content agent 315 may read data payload informationand generate metadata based on the operation for storage in metabase 314and may include a pointer to the data item in mass storage 318. Thepointer information may optionally be stored in an index. This metadatamay also be stored with the data item in mass storage 318 or as an entryfunctioning in place of or in addition to metabase 314. Storing metadatarelating to data content in metabase 314 provides the capability toperform content searches for data in the metabase 314, instead ofsearching entries in mass storage 318. This allows the system to quicklylocate information satisfying a content query that may be retrieved frommass storage 318, if necessary.

Moreover, such content metadata may be generated and used in locatingdata based on content features throughout a hierarchy within a storageoperation system (e.g., content metadata may be generated and stored ateach or certain levels of storage within the system (primary, secondary,tertiary, etc.) to facilitate location and retrieval of data based oncontent). As will be understood by one of skill in the art, thefunctionality provided by the content agent 315, classification agent312 a & b and monitor agent 306 may be provided by one or more modulesor components such that the modules may be integrated into a singlemodule providing the described functions, or may be implemented in onemore separate modules each providing some of the functions.

FIG. 3 b is a flow chart 350 illustrating some of the steps that may beinvolved in the journaling process described above. At step 355, themonitor program may be initialized, which may include instantiating adata structure or index for recording interaction entries, and theassignment of a unique journal ID number which allows the system todifferentiate between various journaling data structures that may beoperating within the system. As mentioned above, the monitor program mayinclude a filter driver or other application that monitors dataoperations (step 360). During the monitoring process, the monitor agentmay observe data interactions between memory and mass storage todetermine that certain data interactions have occurred. Informationrelating to the interactions may be captured and used to populate themetabase. In some instances, interaction types or certain aspects ofinteractions are captured. Such types or aspects may be defined in aninteraction definition, which may be a change journal reason codes asused by Microsoft's Change Journal program, or be defined by a user ornetwork administrator to capture some or all data interactions in orderto meet user needs. For example, certain change definitions may recordevery data interaction that occurs regardless of whether any dataactually changes or not. Such information may be useful, for example, todetermine users or processes that have “touched scanned or otherwiseaccessed data without actually changing it.

Thus, it is possible to employ interaction definitions that may capturea relatively broad or narrow set of operations, allowing a user tocustomize the monitor program to meet certain goals. Such interactiondefinitions may define or describe data movement, changes, manipulationsor other operations or interactions that may be of interest to a systemuser or administrator (e.g., any operation that “touches” data may berecording along with the action or operation that caused the interaction(e.g. read, write, copy, parse, etc.) Moreover, change definitions mayevolve over time or may be dynamic based on the entries sent to theindex. For example, if expected results are not obtained, changedefinitions may be modified or additional definitions used untilappropriate or desired results are obtained. This may be accomplished,for example by globally linking certain libraries of interactiondefinitions and selectively enabling libraries on a rolling basis untilacceptable results are achieved. This process may be performed after theinitial activation of the monitor agent and periodically thereafter,depending on changing needs or objectives.

Moreover, in some embodiments, the system may support the use of “usertags” that allow certain types of information to be tagged so they maybe identified and tracked throughout the system. For example, a user maydesignate a particular type of data or information such as projectinformation, or information shared between or accessed by particulargroup of users to be tracked across the system or through various levelsof storage. This may be accomplished through a user interface (notshown) that allows a user to define certain information to be tagged,for example, by using any available attribute within the system such asthose specified above with respect to the classification agent or filterused in the system. In some embodiments, the user may define one or moretags using these or other attributes which may be further refined bycombining them through the use of logical or Boolean operators to adefine a certain tag expression.

For example, a user may define a certain tag by specifying one or morecriteria to be satisfied such as certain system users, a certain datapermission level, a certain project, etc. These criteria may be definedusing a logical operators such as an AND or OR operators toconditionally combine various attributes to create a condition thatdefines a tag. All information satisfying those criteria may be taggedand tracked within the system. For example, as data passes through themonitor agent 306 (or other module within update agent 304), the datasatisfying these criteria may be identified and tagged with a header ora flag or other identifying information as is known in the art. Thisinformation may be copied or otherwise noted by metabase 314 and massstorage 318 so that the information may be quickly identified. Forexample, the metabase may contain entries keeping track of all entriessatisfying the tag criteria along with information relating to the typesof operations performed on the information as well as certain metadatarelating to the data content and its location in mass storage 318. Thisallows the system to search the metabase at a particular level ofstorage for the information, and quickly locate it within mass storagedevice for potential retrieval.

Next, a step 365, the monitor agent may continue to monitor datainteractions based on change definitions until an interaction satisfyinga definition occurs. Thus, a system according to one embodiment of thepresent invention may continue to monitor data interactions at steps 360and 365 until a defined interaction, such as an interaction satisfyingor corresponding to a selection criterion, such as an interactiondefinition, etc., occurs. If a defined interaction does occur, themonitor agent may create a record, which may be stored in a monitorprogram index, and in some embodiments, assign an interaction code thatdescribes the interaction observed on the data object. Next, a step 370,the monitor program may identify a data object identifier associatedwith the data and that is associated with the data interaction, such asa file reference number (FRN) related to the data object. The FRN mayinclude certain information such as the location or path of theassociated data object. Any additional information (e.g., dataproperties, copy properties, storage policy information, etc.)associated with the FRN may also be obtained in order to enrich orenhance the record. In some embodiments, this may further involveobtaining information from other system files including master filetables (MFTs) to further enhance the metabase entries. Additionalprocessing or formatting of the metabase entries may also occur inaccordance with certain defined classification paradigms in order topopulate the metabase with optimal or preferred information.

Next, at step 375 the record may be assigned record identifier such as aunique update sequence number (USN) that may be used to uniquelyidentify the entry within the index, and, in some embodiments, act as anindex memory location. Thus a particular record may be quickly locatedwith a data structure based on the USN. Next at step 380, theinformation described above may be concatenated or otherwise combinedwith other data or metadata data obtained by the monitor agent andarranged in an appropriate or expected format to create the record thatmay be written to the monitor index.

In alternate embodiments, the information described above may be writtento the index and arranged at the index into an expected format or may bewritten to the record “as received” and include metadata or otherinformation, such as a header describing that information such thatadherence to a strict data format is not required. For example, somerecords may contain more or less information than other records, asappropriate. After the record has been constructed and deemed complete,the record may be “closed” by the system at step 385 and the system maythen assign another USN to the next detected change. However, if therecord is determined to be incomplete, the monitor agent or update agentmay request any missing information to complete the entry. If suchinformation is not received, the monitor agent may set a flag within therecord to indicate it contains incomplete information and the record maythen be closed.

FIG. 4 is a flow chart 400 illustrating some of the steps that may beinvolved in a data classification process. At step 410, theclassification agent may be initialized, which may include activating,reserving and/or clearing certain buffers and/or linking to librariesassociated with deployment of the classification agent. Prior toscanning the interaction records generated by the monitor agent asdescribed above, the classification agent may classify existing storeddata by, for example, traversing the file and directory structure of anobject system to initially populate the metabase as described herein.

Next, at step 420, during normal operation, the classification agent mayscan the entries in the interaction journal to determine whether newentries exist since any previous classification processing wasperformed, for example, by determining whether the most recent entrycurrently in the journal is more or less recent than the last journalentry analyzed. This may be accomplished in several ways. One method mayinclude scanning a time or date information associated with the lastjournal entry examined and comparing it to the most recent time or dateinformation than the entry currently present in the journal. If it isdetermined that the most recent journal entry occurred after a previousclassification process, this process may be performed iteratively by“walking backwards” through the journal entries until the last entrypreviously analyzed by the classification agent is found. All entrieswith time information after that point may be considered new orunprocessed by the classification agent (step 440). If the last entryanalyzed has the same time stamp as the most recent entry in thejournal, no new entries exist and the system may return to step 420 tocontinue monitoring, etc.

Another method of identifying new journal entries may include comparingrecord identifiers such as USN numbers assigned to each journal entry(step 430). Journal entries with a larger USN number than the last entrypreviously analyzed may be considered new or unprocessed. If the lastentry analyzed has the same USN number as the current entry, no newentries exist and the system may return to step 420 to continuemonitoring, etc. This comparison may be performed until new entries arelocated (step 440) or until it is determined that no new entries exist.

In other embodiments, rather than scanning the journal data structurefor new entries, any entries created by the journal agent may beautomatically sent to the classification agent and the identificationprocess may be largely unnecessary (except for the case where suchscanning is necessary or desirable, for example, to repopulate thejournal or verify certain information, etc.).

Next, at step 450, assuming new journal entries are identified, thesystem may determine if a metabase record already exists for the dataobject associated with those entries. This may be accomplished bycomparing data object identifiers, such as FRNs of metabase entries withdata object identifiers such as FRNs of journal entries. Matching theseand other unique data characteristics may be used to match or correlatemetabase and journal entries.

If no corresponding metabase record is identified, a new record may becreated at step 460. This may involve creating a new metabase entry ID,analyzing the journal entry and parsing the entry into a predeterminedformat, and copying certain portions of the parsed data to the newmetabase entry (steps 460 and 470), as further described herein. Anyadditional metadata or file system information may also be associatedwith the new entry to enhance its content, including information from anFRN or information derived from an interaction code present in thejournal entry, file system, e.g., MFT, etc. (step 480).

On the other hand, if a corresponding metadata entry is identified, thenew journal entry may be processed as described above and may overwritesome or all of the corresponding entry. Such an updated pre-existingentry may receive an updated time stamp to indicate a current revision.However, in some embodiments, even if a corresponding entry is located,a new entry may be created and written to the metabase and optionallyassociated with the existing record. In such a system, the older relatedrecord may be maintained, for example, archival, recreation, historicalor diagnostic purposes, and in some embodiments, may be marked orindicated as outdated or otherwise superseded. Such correspondingentries may be linked to one another via a pointer or other mechanismsuch that entries relating to the history of a particular data objectmay be quickly obtained.

Next, at step 490 the system may process any additional new journalentries detected by returning to step 450, where those additional newentries may be processed as described above. If no new entries aredetected, the system may return to step 420 to perform additional scanson the journal data structure and continue monitoring.

FIG. 5 illustrates an embodiment of the present invention in which asecondary processor performs some or all of functions associated withthe data classification process described herein, including certainsearch functions. As shown, system 500 may include a manager module 505which may include an index 510, a first computing device 515, (which mayinclude a first processor 520, a journal agent 530, and a dataclassification agent 535), and a second computing device 540 which mayinclude a second processor 545 and a data classification agent 535.System 500 may also include data store 550, a metabase 555 and changejournal 560.

Computing devices 515 and 544 may be any suitable computing device asdescribed herein and may include clients, servers or other networkcomputers running software, such as applications or programs thatcreate, transfer, and store electronic data. In some embodiments,metabase 555 and journal 560 may be physically located within computingdevice 515, e.g., stored on local mass storage. In other embodiments themetabase 555 and journal 560 may be external to computing device 515 (ordistributed between the two). In yet other embodiments, metabase 555 isaccessible via a network and journal 560 is a local device.

In operation, computing device 515 may operate in a substantiallysimilar manner as system 300 shown in FIG. 3 with second processor 545in second computing device 540 performing certain functions. Forexample, as shown, data classification agent 535 and journaling agent530 may operate substantially as described in connection with FIG. 3,i.e., journaling agent monitors data interactions on computing device515 and records the interactions in journal 535 and classification agentprocesses journal entries and populates metabase 555, etc.

However, certain of the functions may be initiated or performed in wholeor in part by second processor 545. Computing operations associated withjournal agent 530 and/or classification agent 535 may run on or bedirected by second processor 545 and may also utilize support resourceslocated on or associated with computing device 540 such that theresources on computing device 515 are substantially unimpacted by theseoperations. This may serve to offload certain non-critical tasks fromthe host system (515) and have them performed by a secondary computingdevice 545.

For example, in some embodiments, the processing burden associated withsome or all of the following tasks normally performed by first computingdevice 515 may be performed by processor 545 and associated resources insecond computing device 540: (1) the initial scan of client files by theclassification agent 535 and population of metabase 555, (2) the ongoingmonitoring of data interactions of computing device (e.g., 515) andgeneration of interaction records for storage in journal 560, (3)processing and classification of journal information for updatingmetabase 555; and (4) searching or otherwise analyzing or accessingmetabase 555 and/or journal 560 for certain information. However, insome embodiments it may be preferred to assign the secondary computingdevice the certain tasks such as those associated with searchingmetabase 555, while other tasks such as updating the journal andmetabase may be performed by the primary computing device.

Performing such operations using a secondary or other processor may bedesirable, for example, when the primary processor (e.g., processor 520)is unavailable, over utilized, unavailable or otherwise heavily used, orwhen it is otherwise desired to remove the primary processor and otherprimary system resources from performing certain tasks such as the onesdescribed above. For example, in the case where it is desired to searchor access metabase 555 for certain information, it may be preferable toavoid using processor 520 for this task so it remains free to performother tasks associated with programs operating on computing device 515(e.g., when computing device 515 is busy performing other network orapplication-related functions).

In some embodiments, the secondary processor may be located on computingdevice 515 (e.g., processor 525) and may perform the operationsdescribed herein in connection with processor 545. Moreover, someembodiments may include a manager module 505 which may coordinateoverall operations between the various computing devices. For example,manager module 505 may monitor or otherwise be cognizant of theprocessing load on each computing device and may assign processing tasksbased on availability (e.g., load balance). For example, if processor520 is idle or operating at a low capacity, a request to search metabase555 may be handled by processor 520. However, if processor 520 is busyor scheduled to perform or is performing priority work, manager 505 mayassign the task to processor 545. Manager 505 may act as a generalarbiter for such processor assignments to ensure system 500 is makingefficient use of system resources.

FIG. 6 is flow chart 600 illustrating some of the steps involved inperforming a query on a metabase in a multiple processor system similarto the system shown in FIG. 5. At step 610, a query may be received bythe system for certain information. This request may be processed andanalyzed by a manager module or other system process that determines orotherwise identifies which metabase or metabases within the systemlikely include at least some of the requested information, step 630. Forexample, the query itself may suggest which metabases to search and/orthe management module may consult an index that contains informationregarding metabase content within the system as further describedherein. It will be understood that the identification process mayrequire searching and identifying multiple computing devices within anenterprise or network that may contain information satisfying searchcriteria.

In other embodiments, search requests may be automatically referred to asecondary processor to minimize processing demands on the computingdevice that may have created or is otherwise associated with theidentified metabase(s). In some embodiments, it is preferable that thecomputing device that created or is otherwise associated with theidentified metabase(s) not be involved in processing search operationsas further described herein. Thus, the secondary computing device mayconsult with a manager or index associated with other computing devicesto identify metabases with responsive information.

Next at step 640, the secondary processor may search metabases toidentify appropriate data set that may potentially have informationrelated to the query. This may involve performing iterative searchesthat examine results generated by previous searches and subsequentlysearching additional, previously unidentified metabases to findresponsive information that may not have been found during the initialsearch. Thus the initial metabase search may serve as a starting pointfor searching tasks that may be expanded based on returned or collectedresults. Next, at step 650, the returned results may be optionallyanalyzed for relevance, arranged, and placed in a format suitable forsubsequent use (e.g., with another application), or suitable for viewingby a user and reported (step 650).

FIG. 7 presents a system 700 constructed in accordance with theprinciples of the present invention employing a centralized metabase 760that may serve multiple computing devices 715-725. For example, asshown, system 700 may include computing devices 715-725, each of whichmay include a journaling agent (730-740 respectively), a classificationagent (745-755 respectively), and centralized metabase 760, and in someembodiments, a manager module 705 with an index 710.

In operation, system 700 may operate substantially similarly to system300 shown in FIG. 3 with each computing device 715-725 storingclassification entries in centralized metabase 760 rather than eachcomputing device having its own dedicated metabase. For example, asshown, data classification agents 745-755 may operate substantially asdescribed herein and communicate results to centralized metabase 760.That is, analyze and process entries within the respective journalsassociated with journaling agents 730-740, and report results tometabase 760. With this arrangement, the classification agent mayprovide each metabase entry with an ID tag or other indicia thatidentifies which computing device 715-725 the entry originated from tofacilitate future searches and efficiently designate entry ownership, orother associations between entries and computing devices.

Moreover, each entry to metabase 760 may be assigned a unique identifierfor management purposes. As mentioned above, this number may representthe index location or offset of the entry within centralized metabase760. In some embodiments, entries may be communicated to metabase 760from the computing devices 715-725 on a rolling basis and may bearranged and formatted for storage by the metabase 760. For example,metabase 760 may receive multiple entries at substantially the samepoint in time from multiple computing devices 715-725 and may beresponsible for queuing and arranging such entries for storage withinthe metabase 760.

In some embodiments, system 700 may include manager module 705 that maybe responsible for assigning or removing associations between certaincomputing devices 715-725 and a particular centralized metabase 760. Forexample, in accordance with certain system preferences defined in index710, manager 705 may direct certain computing devices 715-725 to writeclassification entries to a particular centralized metabase 760.Information indicating an association of the metabase 760 and thecomputing devices 715-725 may be stored in the index 710. This allowssystem 700 to reassign resources (globally or locally) to optimizesystem performance without the need to change device pointers or codeassociated with each computing device 715-725 that may be affected by aparticular reallocation. For example, manager 705 may reassign certaincomputing devices 715-725 to another metabase by changing a destinationaddress in an appropriate index.

FIG. 8 is flow chart 800 illustrating some of the steps involved inusing a centralized metabase with multiple computing devices similar tothe one shown in FIG. 7. At step 810, a centralized metabase may beinstantiated by a manager module or in accordance with certain systemmanagement or provisioning policies. This may involve securing certainprocessing, storage, and management resources for performing the task,loading certain routines into various memory buffers and informing themanagement module that the metabase is ready for operation.

Next, at step 820, the management module may review system resources,management policies, operating trends, and other information, forexample, to identify computing devices to associate with theinstantiated centralized metabase. This may further involve identifyingpathways to the metabase from the various computing devices, locatingoperational policies governing the computing devices and, creatingcertain logical associations between the centralized metabases and theidentified computing devices. These associations, once created, may bestored in an index or database for system management purposes.

After the metabase has been instantiated and associated with computingdevices, classification agents within each associated computing devicemay scan existing files or data on the computing devices or clients(step 825) and populate the centralized metabase as further describedherein (step 830). During the scanning process, a computing deviceidentifier or other indicia may be appended or otherwise associated withthe entry prior to transmission to the metabase such that each entry inthe metabase can be tracked to its associated source computing device(step 840). Next, the centralized metabase may be populated with entries(step 850) and may communicate with the management module to establishand monitor a list of computing devices serviced by the centralizedmetabase and return to step 830. At this point, the system continues tomonitor the associated computing devices for data interactions, whichmay be reported to the centralized metabase on an ongoing, periodic, orrolling basis.

In certain circumstances, the centralized metabase may need toassimilate or otherwise integrate existing entries with new entriesreported by the computing devices. For example, the centralized metabasemay become disconnected or unavailable for a period of time andsubsequently be required to integrate a large number of queued entries.In this case, the metabase or management module may examine existingmetabase entries as described herein and communicate with computingdevices to identify: (1) the amount of time the object computer and themetabases have been disconnected, (2) the number of queued entries atthe computing devices that need to be processed (for example, entriescached once the centralized metabase was inaccessible for writeoperations), (3) whether there are any duplicative entries, and (4)which entries need to be integrated and in what order of preference(assuming multiple computing devices contain queued entries).

Based on these criteria, the management module or centralized metabasemay assimilate the relevant entries into the metabase in the appropriateorder until the backlog is eliminated and the system returns to normaloperation. If it is determined during this process that certaininformation is lost to cache overflow, accidental deletion, corruption,or other reasons, the metabase and/or manager module may indicate such adiscontinuity with the metadata or index associated with the centralizedstorage device or management module. In this case, clients, computingdevices or other data sources may be rescanned to replace or repair thefaulty entries. In other embodiments, the points of discontinuity may benoted and interpolation or other data healing techniques may be employedto provide derived information for the unknown points based on knowninformation.

FIG. 9 presents a system 900 constructed in accordance with theprinciples of the present invention including a computing device thatinteracts with a network attached storage device (NAS). As shown, system900 may include a management module 905 and index 910, computing devices915-925, each of which may include a journaling agent (945-955respectively), a classification agent (930-940 respectively), datastores 960 and 965, and metabases 970-980. System 900 may also includeNAS device 995 which may include NAS storage device 990 and NAS filesystem manager 985. Moreover, computing device 925 may be configured tooperate as a NAS proxy device supervising the transfer of data to andfrom NAS device 995.

In operation, system 900 may operate substantially similar to system 300shown in FIG. 3 a with exception of the NAS portion shown on theright-hand side. For example, as shown, data classification agents930-940 may operate substantially as described herein and communicateresults to their respective metabases 970-980. That is, analyze andprocess entries within the respective journals associated withjournaling agents 945-955, and report results to metabases 970-980 whichmay be supervised in whole or in part by management module 905.

Data from computing device 925 may be journaled and classified usingmethods similar to those described herein. For example, journaling agent955 may reside on computing device 925 and track each or certain datainteractions between NAS device 995 and external applications. Thelocation of the journaling agent 955 may be external to the NAS device995 due, at least in part, to its proprietary nature (i.e., a closedsystem) and the difficulty associated with attempting to run otherprograms on the NAS device 995 itself.

The NAS portion 995 of system 900 may operate somewhat differently. Forexample computing device 925 may operate as a NAS proxy for moving datafiles to and from NAS device 995 using a specialized protocol such asthe Network Data Management Protocol (NDMP) that is an open networkprotocol designed to perform data backups over heterogeneous networks.NDMP may be used to enhance performance by transferring data over anetwork by separating data and control paths, while maintainingcentralized backup administration.

Journaling agent 955 may record any interactions between NAS data andexternal applications and record those interactions in computing device925 as described herein. In some embodiments, such a journaling agentmay include specialized routines for interpreting and processing data inNAS format. Data classification agent 940 may analyze journal entriesand populate metabase 980 initially and periodically as furtherdescribed herein.

Once initially populated, it may be desired to search the metabases ofsystem 900 for certain information. This is discussed in more detailbelow in connection with the flow chart 1100 of FIG. 11. In someembodiments, this may be handled by manager 905 or other system processwhich may initially evaluate any search request and consult index 910 orother information stores to determine which metabases within the systemare likely to include responsive information. The results of thisevaluation may be provided to the computing device handling the searchrequest and may be in the form of pointers or other indicia oridentifiers identifying a metabase such as a metabase ID. This may allowthe computing device posing the search request to contact and search theidentified metadata directly. In other embodiments manager 905 mayprocess the request and provide substantially complete results to thecomputing device that submitted the query.

FIG. 10 is flow chart 1000 illustrating some of the steps that may beinvolved in using the NAS system similar to or the same as the one shownof FIG. 9. At step 1010 a copy operation may be initiated that directsdata from computing device to a NAS device. This may involve identifyingcertain data to moved, for example, based on a data management orstorage policy. Other factors that may also be considered may includedata size, the last time the data was moved to the NAS device, the fileowner, application type, etc.

It will be understood that in some embodiments it may be preferred touse computing device 925 as a NAS proxy that routes data from othernetwork computing devices (not shown) to NAS device 995 with thecomputing device 925 supervising the data movement using certainspecialized transfer programs to assist in the effort (step 1020). Asthe data is routed though computing device 925, journaling agent 955 maymonitor interactions with NAS device 995 and create interaction entriesfor an interaction journal (step 1030). This may be accomplished byconsulting with NAS file manager 985 and identifying which files in NAS995 that have been involved in a data interaction as further describedherein (step 1040). Next, journal entries may be created or updated toreflect data interactions currently detected as previously describedherein (step 1050). The interaction journal may then be scanned toanalyze the journal records (step 1060) and perform the classificationprocess as further described herein to create metabase entries (step1070). At this point metabase entries may be assigned an identifier andused to populate metabase 980 (step 1080).

As mentioned above, under certain circumstances, it may be desired tosearch a system that includes multiple metabases for certain informationsuch as system 900 shown in FIG. 9 whether or not NAS included. FIG. 11includes a flow chart 1100 illustrating some of the steps that may beperformed in searching a multiple metabase system in accordance withcertain aspects of the present invention.

Assume, for example, a user wants to locate and copy all data relatingto a certain specified criteria such as data relating to a specificmarketing project created and edited by a specific group of users over acertain period of time. First, the requestor may formulate such arequest through a user interface (not shown) using techniques known inthe art and submit the request to the system for processing. This mayalso be accomplished by an automated computerized process, for example,when the system is performing certain management functions. Next thesystem may receive and analyze this query (step 1110). In someembodiments, this may be performed by a computing device configured tosupport the user interface. In other embodiments, the computing devicemay simply pass the request to the system where a management module orother system process computing device may perform the analysis. Theanalysis may include determining characteristics of data in the metabasethat may satisfy the selected criteria.

Once the search request or query has been analyzed or parsed, the systemmay identify all metabases likely to contain records related to relevantdata objects based on a query. This may be accomplished by usinginformation obtained from analyzing or parsing the request as well asconsulting with a management module that may have a substantially globalview of metabases within the system that includes index information or ageneral overview of the information the metabases contain. After a setof metabases have been identified, the management module or othercomputing device may perform the search to identify a data setsatisfying a query as further described herein and return a set ofresults (step 1130). At step 1140 the results may optionally benormalized. If normalization is not required, the results may bereported at step 1150. If normalization is desired, the system mayanalyze the results for both content and completeness. If, based on thereturned results, other unsearched metabases are implicated aspotentially having information that satisfies the search criteria, thosemetabases may be searched as well. This process may continue in aniterative fashion until a substantially complete set of results isobtained. Even if no additional metabases are implicated, these resultsmay then be optionally normalized by performing certain functions suchas locating and removing duplicative results, identifying networkpathways to data objects identified in the search, and formatting orarranging the results for further processing (whether another computingprocess or for a user). For example, the returned results may be used tolocate and retrieve the responsive data objects that may includeinformation located on primary or secondary storage devices within thesystem or for other purposes as further described herein.

In some embodiments, the systems and methods of the present inventionmay be employed to identify and track some or all data interactions on auser or group basis. For example, a system administrator or user maywish to record and keep track of all data interactions involving some orall system groups or users. This may include, for example, read andwrite operations performed on the user's or group's behalf, informationand applications used or accessed, viewed web pages, electronic gaminginteractions, chat, instant messages, and other communicationinteractions, multimedia usage, and other Internet or network basedelectronic interactions as known in the art. Thus, the systemidentifies, captures, classifies, and may otherwise track user and groupinteractions with electronic data creating a data store or otherrepository of these interactions and metadata associated with theseinteractions. In some embodiments, this repository may serve as a“digital or electronic life record” that effectively chronicles andcatalogues some or all user or group interactions with electronicinformation and data during a given time period as further describedherein.

For example, FIG. 11 a illustrates a system constructed in accordancewith the principles of the present invention that identifies, captures,classifies, and otherwise tracks user and group interactions withelectronic data. As shown, the system may generally include computingdevice 1162, one or more classification agents 1164, one or morejournaling agents 1165, metabase 1166, change record 1167, and database1168.

In operation computing device 1162 may be coupled to or interact withvarious other applications, networks, and electronic information suchas, for example multimedia applications 1170, instant messaging/chatapplications 1172, network applications 1174 such as an enterprise WANor LAN, Internet 1176, and gaming applications 1178. It will beunderstood, however, that these are only examples and that any othernetwork, application, or type of electronic information suitable for thepurposes described herein may be added if desired.

Journaling agents 1165 and classification agents 1164 may operate inconjunction with one another to detect and record data interactions asfurther described herein. For example, each type of electronic datainteraction (e.g.—instant messaging, web surfing, Internet searchactivities, electronic gaming, multimedia usage, etc.) may beidentified, captured, classified, and otherwise tracked by a differentjournaling agent 1165 and classification agent 1164, for example aninteraction-specific journaling agent 1165 or classification agent 1164dedicated to processing a single type of interaction with electronicdata. Thus, the system may have a first journaling agent 1165 and afirst classification agent 1164 monitoring network traffic on a givennetwork interface (not shown) directed to interactions associated withInternet usage, and a second journaling agent 1165 and a secondclassification agent 1164 monitoring a different system resourcedirected to interactions associated with electronic gaming(e.g.—recording and classifying gaming interactions such as recordinggames played, opponents played, win/loss records, etc.) or directed tointeractions associated with use of an Internet browser to “surf” web(e.g.—tracking pages visited, content, use patterns, etc.) In someembodiments, journaling agent 1165 and classification agent 1164 mayfunction as a single module capable of performing some or all functionsassociated with journaling agent 1165 and a classification agent 1164.

Thus, as a user or group interacts with various types of electronicinformation, some or all of those interactions may be captured andrecorded in database 1168. Change record 1167 and metabase 1166 mayrecord certain aspects of the interactions as further described hereinand may represent an interaction by interaction log of the user'scomputing activities.

For example, in operation, a user of computing device 1162 may interactwith certain applications such as multimedia application 1170 andinstant messaging application 1172. This may include sending, receiving,viewing and responding to various audio/video files in any suitableformat and may include instant, text or email messages. Journaling agent1165 may detect the interactions between these applications andcomputing device 1162 and classification agent 1164 may classify andrecord information (e.g., metadata) associated with these interactionsin metabase 1166 as further described herein.

Moreover, in some embodiments, some or all the content being exchangedor otherwise associated with these interactions may be captured andstored in database 1168 or other storage locations in the system. Thismay include capturing screen shots or summaries of information exchangesduring data interactions. For example, the system may download allcontent associated with web pages viewed thus being able to recreate theoriginal page content and interaction without access to the original orsource version of the page on the Internet or other network. This may beadvantageous, for example, if a user wishes to interact with contentassociated with a previous interaction when that content is no longeravailable, as is common with web pages and other network resources overtime. As another example, the system may also capture or otherwise storedata associated with other interactions, for example chat transcripts,video game replays, search queries, search results, and associatedsearch content, songs accessed, movies accessed, stored songs andmovies, in addition to metadata, etc.

Moreover, in some embodiments, specialized classifications agents may beemployed for some or all of the applications that a user oradministrator desires to track and record. For example, the multimediaand instant messaging applications described above may each have adedicated classification agent that analyzes journal records to createentries for metabase 1166. Further still, each classification agent mayhave its own associated metabase and or repository for source data (notshown), so application histories and content may be quickly indexed andsearched. In other embodiments, however, a “universal” classificationagent may be used that recognizes the application type (e.g., based onthe journaling agent entries) and process interactions accordingly(which may include routing metadata to one or more specializedmetabases).

As shown in FIG. 11 a, computing device 1162 may also interact withvarious network applications 1174 such as LAN or WAN applications. Thesemay include interaction with certain distributed programs such asMicrosoft Word or Outlook. Users may also interact with Internet 1176and download various web pages and other information. In accordance withan aspect of the present invention, interactions with thesenetworks/applications may also be journaled as described above withcertain information regarding these interactions stored in metabase1166. Portions of exchanged content may also be stored in database 1166.For example, Word documents, emails, web pages, web addresses and HTMLcontent may be captured and stored on database 1168 such that itsubstantially represents a record of all user interactions withcomputing device 1162, or other system devices. For example, userinteractions may be recorded with respect to any identified user basedon identifiers and tracked at any network computing device.

Thus, if desired a user may retrieve captured data and review or replaycertain data exchanges or save such records for future reference. Forexample, a user may store all instant messaging interactions for replayor transmission to another. In some instances, it may be desirable tonot record certain interactions, such as personal or privateinformation. In some embodiments, this may be accomplished by“disabling” the appropriate classification agent for a certain period oftime, etc.

Likewise, interactions with gaming applications (network or stand alone)may also be recorded stored with appropriate information stored indatabase 1168 and metabase 1166. Thus, a user may have the ability toretrieve, replay and transmit certain saved gaming sequences to thirdparties.

In some embodiments, database 1168 may become large and thus someinformation stored thereon may be moved to single instance storage fromdatabase 1168 with a pointer placed in the logical address of theinstanced information (not shown). This may be performed as a memorysaving measure as at least some of the entries in database 1168 arelikely to be duplicative.

Some of the steps associated with the method generally described aboveare illustrated in chart 1200 of FIG. 12 and may include the following.At the outset, a group or user of interest may be identified based oncertain user related information or other network characteristics (step1210). Such characteristics may include Active Directory privileges,network login, machine ID, or certain biometrics associated with a useror group member. These characteristics may be combined together orassociated with one another to create a user or group profile. Suchprofiles may be stored in a database or index within a management moduleof the system and may be used as classification definitions within thesystem. When it is desired to identify or classify data items associatedwith a particular interaction, the system may compare certain attributesof the data involved in a detected interaction and associate thatinteraction with a particular group or user based on profile information(step 1220).

Such associations may be stored in a metabase created to keep track ofuser or group interactions. Thus, in one embodiment, the metabaseessentially represents a list of all data interaction for a particulargroup or user. If desired, a list or copy of all the data items touched(e.g., interacted with) by a group or user may be quickly obtained.

In operation, the system may, through the use of a journaling agent orthe like, monitor data interactions for a particular computing device asdescribed herein. The interactions may be analyzed by a classificationagent as described herein and associated with one or more profiles (step1230). The association may be recorded in an identified metabase(s) thatkeeps track of a user's or group's interactions (step 1240) which mayinclude references to the data object(s) identified, the attributescompared, and the basis for the association, etc. As discussed herein,the journaling agent may continue to monitor data interactionsthroughout operation, so that each metabase is updated and continues toaccurately represent the data touched by a particular group or user. Theidentified metabases are associated with an identified group or user(step 1250), such as by storing an indication of the association in anindex.

FIG. 13 presents a system 1300 constructed in accordance with theprinciples of the present invention for communicating metadata and/ordata objects between two or more computing devices. As shown, system1300 may generally include first and second computing devices 1310 and1320, respectively, associated data stores 1330 and 1340, and metabases1350 and 1360. Computing devices in system 1300 may store data objectsand metadata in their respective metabases and data stores as furtherdescribed herein. In certain situations, however, it may be desired totransfer certain metadata between metabases 1350 and 1360 and certaindata objects between data stores 1330 and 1340. This may be desirablefor example, to move certain data from one computing device to another,to recreate a certain application at another location, or to copy orbackup certain data objects and associated metadata.

FIG. 14 presents a flow chart 1400 illustrating some of the stepsassociated with moving data between the computing devices describedabove. First, at step 1410, data objects and/or associated metadata maybe identified for movement from one computing device to another. Thismay be accomplished by forming a query for certain data, such as asearch for data that may be to be moved or copied pursuant to a datamanagement or storage policy, or in response to a request to move datarelating to certain processes or applications from one computing deviceto another, for any other suitable purpose such as disaster recovery,resource reallocation or reorganization, load balancing, etc.

At step 1420, the query may be analyzed and a first data storeassociated with a first computer may be searched for data objectssatisfying the search criteria. Data objects identified during thisprocess may then be transferred to a second data store associated with asecond computing device (step 1430). Metadata associated with thetransferred data objects may also be identified in a first metabaseassociated with the first computing device and transferred to anappropriate second metabase associated with the second computing device(step 1440). Such a transfer may involve copying data objects andmetadata from one data store and metabase to another, or in someembodiments, may involve migrating the data from its original locationto a second location and leaving a pointer or other reference to thesecond location so the moved information may be quickly located frominformation present at the original location.

FIG. 15 illustrates a one arrangement of resources in a computingnetwork in accordance with the principles of the present invention. Asshown, storage operation cell 1550 may generally include a storagemanager 1501, a data agent 1595, a media agent 1505, a storage device1515, and, in some embodiments, may include certain other componentssuch as a client 1585, a data or information store 1590, database 1511,jobs agent 1520, an interface module 1525, and a management agent 1530.Such system and elements thereof are exemplary of a modular storagesystem such as the CommVault QiNetix system, and also the CommVaultGALAXY backup system, available from CommVault Systems, Inc. ofOceanport, N.J., and further described in U.S. patent application Ser.No. 09/610,738 which is incorporated herein by reference in itsentirety.

A storage operation cell, such as cell 1550, may generally includecombinations of hardware and software components associated withperforming storage operations on electronic data. According to someembodiments of the invention, storage operations cell 50 may be relatedto backup cells and provide some or all of the functionality of backupcells as described in application Ser. No. 09/354,058, which is herebyincorporated by reference in its entirety. However, in certainembodiments, storage operation cells may also perform additional typesof storage operations and other types of storage management functionsthat are not generally offered by backup cells.

In accordance with certain embodiments of the present invention,additional storage operations performed by storage operation cells mayinclude creating, storing, retrieving, and migrating primary storagedata (e.g., 1590) and secondary storage data (which may include, forexample, snapshot copies, backup copies, HSM copies, archive copies, andother types of copies of electronic data) stored on storage devices1515. In some embodiments, storage operation cells may also provide oneor more integrated management consoles for users or system processes tointerface with in order to perform certain storage operations onelectronic data as further described herein. Such integrated managementconsoles may be displayed at a central control facility or severalsimilar consoles distributed throughout multiple network locations toprovide global or geographically specific network data storageinformation.

In some embodiments, storage operations may be performed according tovarious storage preferences, for example as expressed by a userpreference or storage policy. A storage policy is generally a datastructure or other information source that includes a set of preferencesand other storage criteria associated with performing a storageoperation. The preferences and storage criteria may include, but are notlimited to, a storage location, relationships between system components,network pathway to utilize, retention policies, data characteristics,compression or encryption requirements, preferred system components toutilize in a storage operation, and other criteria relating to a storageoperation. Thus, a storage policy may indicate that certain data is tobe stored in a specific storage device, retained for a specified periodof time before being aged to another tier of secondary storage, copiedto secondary storage using a specified number of streams, etc. A storagepolicy may be stored in a storage manager database 1511, to archivemedia as metadata for use in restore operations or other storageoperations, or to other locations or components of the system.

A schedule policy may specify when to perform storage operations and howoften and may also specify performing certain storage operations onsub-clients of data and how to treat those sub-clients. A sub-client mayrepresent static or dynamic associations of portions of data of a volumeand are typically mutually exclusive. Thus, a portion of data may begiven a label and the association is stored as a static entity in anindex, database or other storage location used by the system.Sub-clients may also be used as an effective administrative scheme oforganizing data according to data type, department within theenterprise, storage preferences, etc.

For example, an administrator may find it preferable to separate e-maildata from financial data using two different sub-clients havingdifferent storage preferences, retention criteria, etc. Storageoperation cells may contain not only physical devices, but also mayrepresent logical concepts, organizations, and hierarchies. For example,a first storage operation cell 1550 may be configured to perform a firsttype of storage operations such as HSM operations, which may includebackup or other types of data migration, and may include a variety ofphysical components including a storage manager 1501 (or managementagent 1530), a media agent 1505, a client component 1585, and othercomponents as described herein. A second storage operation cell maycontain the same or similar physical components, however, it may beconfigured to perform a second type of storage operations such as SRMoperations, and may include as monitoring a primary data copy orperforming other known SRM operations.

Thus, as can be seen from the above, although the first and secondstorage operation cells are logically distinct entities configured toperform different management functions (i.e., HSM and SRM respectively),each cell may contain the same or similar physical devices in bothstorage operation cells. Alternatively, in other embodiments, differentstorage operation cells may contain some of the same physical devicesand not others. For example, a storage operation cell 1550 configured toperform SRM tasks may contain a media agent 1505, client 1585, or othernetwork device connected to a primary storage volume, while a storageoperation cell 1550 configured to perform HSM tasks may instead includea media agent 1505, client 1585, or other network device connected to asecondary storage volume and not contain the elements or componentsassociated with and including the primary storage volume. These twocells, however, may each include a different storage manager 1501 thatcoordinates storage operations via the same media agents 1505 andstorage devices 1515. This “overlapping” configuration allows storageresources to be accessed by more than one storage manager 1501 such thatmultiple paths exist to each storage device 1515 facilitating failover,load balancing and promoting robust data access via alternative routes.

Alternatively, in some embodiments, the same storage manager 1501 maycontrol two or more cells 1550 (whether or not each storage cell 1550has its own dedicated storage manager 100). Moreover, in certainembodiments, the extent or type of overlap may be user-defined (througha control console (not shown)) or may be automatically configured tooptimize data storage and/or retrieval.

Data agent 1595 may be a software module or part of a software modulethat is generally responsible for copying, archiving, migrating, andrecovering data from client computer 1585 stored in an information store1590 or other memory location. Each client computer 1585 may have atleast one data agent 1595 and the system can support multiple clientcomputers 1585. In some embodiments, data agents 1595 may be distributedbetween client 1585 and storage manager 1501 (and any other intermediatecomponents (not shown)) or may be deployed from a remote location or itsfunctions approximated by a remote process that performs some or all ofthe functions of data agent 1595.

Embodiments of the present invention may employ multiple data agents1595 each of which may backup, migrate, and recover data associated witha different application. For example, different individual data agents1595 may be designed to handle Microsoft Exchange data, Lotus Notesdata, Microsoft Windows 2000 file system data, Microsoft ActiveDirectory Objects data, and other types of data known in the art. Otherembodiments may employ one or more generic data agents 1595 that canhandle and process multiple data types rather than using the specializeddata agents described above.

If a client computer 1585 has two or more types of data, one data agent1595 may be required for each data type to copy, archive, migrate, andrestore the client computer 1585 data. For example, to backup, migrate,and restore all of the data on a Microsoft Exchange 2000 server, theclient computer 1585 may use one Microsoft Exchange 2000 Mailbox dataagent 1595 to backup the Exchange 2000 mailboxes, one Microsoft Exchange2000 Database data agent 1595 to backup the Exchange 2000 databases, oneMicrosoft Exchange 2000 Public Folder data agent 1595 to backup theExchange 2000 Public Folders, and one Microsoft Windows 2000 File Systemdata agent 1595 to backup the client computer's 1585 file system. Thesedata agents 1595 would be treated as four separate data agents 1595 bythe system even though they reside on the same client computer 1585.

Alternatively, other embodiments may use one or more generic data agents1595, each of which may be capable of handling two or more data types.For example, one generic data agent 1595 may be used to back up, migrateand restore Microsoft Exchange 2000 Mailbox data and Microsoft Exchange2000 Database data while another generic data agent may handle MicrosoftExchange 2000 Public Folder data and Microsoft Windows 2000 File Systemdata, etc.

Data agents 1595 may be responsible for arranging or packing data to becopied or migrated into a certain format such as an archive file whichis discussed in more detail in connection with FIG. 16 herein.Nonetheless, it will be understood this represents only one example andany suitable packing or containerization technique or transfermethodology may be used if desired. Such an archive file may include alist of files or data objects copied in metadata, the file and dataobjects themselves. Moreover, any data moved by the data agents may betracked within the system by updating indexes associated appropriatestorage managers or media agents.

Generally speaking, storage manager 1501 may be a software module orother application that coordinates and controls storage operationsperformed by storage operation cell 1550. Storage manager 1501 maycommunicate with some or all elements of storage operation cell 1550including client computers 1585, data agents 1595, media agents 1505,and storage devices 1515, to initiate and manage system backups,migrations, and data recovery.

Storage manager 1501 may include a jobs agent 1520 that monitors thestatus of some or all storage operations previously performed, currentlybeing performed, or scheduled to be performed by storage operation cell1550. Jobs agent 1520 may be communicatively coupled with an interfaceagent 1525 (typically a software module or application). Interface agent1525 may include information processing and display software, such as agraphical user interface (“GUI”), an application program interface(“API”), or other interactive interface through which users and systemprocesses can retrieve information about the status of storageoperations. Through interface 1525, users may optionally issueinstructions to various storage operation cells 1550 regardingperformance of the storage operations as described and contemplated bythe present invention. For example, a user may modify a scheduleconcerning the number of pending snapshot copies or other types ofcopies scheduled as needed to suit particular needs or requirements. Asanother example, a user may employ the GUI to view the status of pendingstorage operations in some or all of the storage operation cells in agiven network or to monitor the status of certain components in aparticular storage operation cell (e.g., the amount of storage capacityleft in a particular storage device).

Storage manager 1501 may also include a management agent 1530 that istypically implemented as a software module or application program. Ingeneral, management agent 1530 provides an interface that allows variousmanagement components 1501 in other storage operation cells 1550 tocommunicate with one another. For example, assume a certain networkconfiguration includes multiple cells 1550 adjacent to one another orotherwise logically related in a WAN or LAN configuration (not shown).With this arrangement, each cell 1550 may be connected to the otherthrough each respective interface agent 1525. This allows each cell 1550to send and receive certain pertinent information from other cells 1550including status information, routing information, information regardingcapacity and utilization, etc. These communication paths may also beused to convey information and instructions regarding storageoperations.

For example, a management agent 1530 in first storage operation cell1550 may communicate with a management agent 1530 in a second storageoperation cell 1550 regarding the status of storage operations in thesecond storage operation cell. Another illustrative example includes thecase where a management agent 1530 in first storage operation cell 1550communicates with a management agent 1530 in a second storage operationcell to control the storage manager 1501 (and other components) of thesecond storage operation cell via the management agent 1530 contained inthe storage manager 100.

Another illustrative example is the case where management agent 130 inthe first storage operation cell 1550 communicates directly with andcontrols the components in the second storage management cell 1550 andbypasses the storage manager 1501 in the second storage management cell.If desired, storage operation cells 1550 can also be organizedhierarchically such that hierarchically superior cells control or passinformation to hierarchically subordinate cells or vice versa.

Storage manager 1501 may also maintain an index, a database, or otherdata structure 1511. The data stored in database 1511 may be used toindicate logical associations between components of the system, userpreferences, management tasks, media containerization and data storageinformation or other useful data. For example, the storage manager 1501may use data from database 1511 to track logical associations betweenmedia agent 1505 and storage devices 1515 (or movement of data ascontainerized from primary to secondary storage).

Generally speaking, a media agent, which may also be referred to as asecondary storage computing device, 1505 may be implemented as softwaremodule that conveys data, as directed by storage manager 1501, between aclient computer 1585 and one or more storage devices 1515 such as a tapelibrary, a magnetic media storage device, an optical media storagedevice, or any other suitable storage device. In one embodiment,secondary computing device 1505 may be communicatively coupled with andcontrol a storage device 1515. A secondary computing device 1505 may beconsidered to be associated with a particular storage device 1515 ifthat secondary computing device 1505 is capable of routing and storingdata to particular storage device 1515.

In operation, a secondary computing device 1505 associated with aparticular storage device 1515 may instruct the storage device to use arobotic arm or other retrieval means to load or eject a certain storagemedia, and to subsequently archive, migrate, or restore data to or fromthat media. Secondary computing device 1505 may communicate with astorage device 1515 via a suitable communications path such as a SCSI orfiber channel communications link. In some embodiments, the storagedevice 1515 may be communicatively coupled to a data agent 105 via aStorage Area Network (“SAN”).

Each secondary storage computing device 1505 may maintain a index, adatabase, or other data structure 1506 which may store index datagenerated during backup, migration, and restore and other storageoperations as described herein. For example, performing storageoperations on Microsoft Exchange data may generate index data. Suchindex data provides a secondary computing device 1505 or other externaldevice with a fast and efficient mechanism for locating data stored orbacked up. Thus, in some embodiments, a secondary storage computingdevice index 1506, or a storage manager database 1511, may store dataassociating a client 1585 with a particular secondary computing device1505 or storage device 1515, for example, as specified in a storagepolicy, while a database or other data structure in secondary computingdevice 1505 may indicate where specifically the client 1585 data isstored in storage device 1515, what specific files were stored, andother information associated with storage of client 1585 data. In someembodiments, such index data may be stored along with the data backed upin a storage device 1515, with an additional copy of the index datawritten to index cache in a secondary storage device. Thus the data isreadily available for use in storage operations and other activitieswithout having to be first retrieved from the storage device 1515.

Generally speaking, information stored in cache is typically recentinformation that reflects certain particulars about operations that haverecently occurred. After a certain period of time, this information issent to secondary storage and tracked. This information may need to beretrieved and uploaded back into a cache or other memory in a secondarycomputing device before data can be retrieved from storage device 1515.In some embodiments, the cached information may include informationregarding format or containerization of archive or other files stored onstorage device 1515.

In some embodiments, certain components may reside and execute on thesame computer. For example, in some embodiments, a client computer 1585such as a data agent 1595, or a storage manager 1501 coordinates anddirects local archiving, migration, and retrieval application functionsas further described in U.S. patent application Ser. No. 09/610,738.This client computer 1585 can function independently or together withother similar client computers 1585.

Moreover, as shown in FIG. 15, clients 1585 and secondary computingdevices 1505 may each have associated metabases (1525 and 1560,respectively). However in some embodiments each “tier” of storage, suchas primary storage, secondary storage, tertiary storage, etc., may havemultiple metabases or a centralized metabase, as described herein. Forexample, in FIG. 15, rather than a separate metabase 1525 associatedwith each client 1585, the metabases on this storage tier may becentralized as discussed further herein. Similarly, second and othertiers of storage may have either centralized or distributed metabases.Moreover, mixed architectures systems may be used if desired, that mayinclude a first tier centralized metabase system coupled to with asecond tier storage system having distributed metabases and vice versa,etc.

Moreover, in operation, a storage manager 1501 or other managementmodule may keep track of certain information that allows the storagemanager to select, designated or otherwise identify metabases to besearched in response to certain queries as further described herein.Movement of data between primary and secondary storage may alsoinvolvement movement of associated metadata and other trackinginformation as further described herein.

FIG. 16 is a diagram illustrating one arrangement of data that may beused in constructing an archive file according to one aspect of theinvention. As shown, archive file 1600 may include header section 1610,index section 1620 and payload section 1630. Such an archive file may beconstructed by a data agent at a client computing device when migratingdata, for example, from primary to secondary storage, primary storage toother primary storage, etc. The payload section 1610 may include thedata objects that are to be moved from a first location to a secondlocation within the system (e.g., primary to secondary storage). Thesedata objects may be identified by a data agent and designated to bemoved pursuant to a storage preference such as a storage policy, a userpreference, etc. Header 1610 may include routing and path informationthat identifies the origin and destination of the payload data and mayinclude other information such as a list of files copied, checksums,etc. Index section 1620 may include certain other information regardingthe payload data objects such as size, file type, and any offset orother logical indexing information that may been tracked by a storagemanagement component or other component previously managing the dataobjects in the payload.

In some embodiments, storage managers may index information regardingarchive files and related payload by time and storage on certain mediaso the archive files can be quickly located and/or retrieved. Forexample, it may be desired to identify certain data based on a query.The query may be analyzed and a certain time frame of interest may beidentified. The system may use this information as a basis for a querysearch of certain index information (e.g., only search for recordsconcerning operations that occurred during a specific time). Thisstreamlines the search and retrieval process by narrowing the universeof data needs to be searched to locate responsive information.

FIG. 17 presents a flow chart 1700 that illustrates some of the stepsthat may be performed in moving data from primary storage to otherstorage devices within the system. First, at step 1702, a query seekingcertain data may be identified. The query may include aspects of datasuch as a schedule policy, storage policy, storage preference or otherpreference. The query may be analyzed and a primary metabase searched toidentify data objects that satisfy the query (step 1704). This mayinclude parsing the query into constituent parts and analyzing each partalone or in combination with other portions as part of the evaluationprocess. At step 1706, it may be determined, whether data objectssatisfying the query are to be copied to other primary storage devices,to secondary storage devices or both (pursuant to a storage policy,etc.).

If at least some data objects satisfying the search criteria are to becopied to other primary storage devices, those data objects may beidentified as further described herein and the target primary storagedevice(s) identified. This may involve consulting a storage policy orstorage manager to determine the destination point. In some embodiments,destination maybe determined dynamically, such that it is selected basedon certain system preferences or optimization routines that select astorage device based on storage capacity, availability, data paths tothe destination, etc.

At step 1708 the identified data objects may be copied from primarystorage of a first computing device (the source) to primary storage of asecond computing device (the target or destination). Any metadataassociated with the first computing device describing the copied datamay also be copied to a metabase associated with the second computingdevice such that this description information is not abandoned or lost,but rather travels with the copied data for subsequent use (step 1710).

Next, at step 1712, it may be determined whether the copied data objectsand associated metadata are to be deleted from the source computingdevice. For example, this may be done in order to free storage space onthe source computer or in accordance with certain data aging ormigration criteria. If it is decided to delete the data objects (andassociated metadata) the memory locations which include the data may beerased or designated for overwrite (step 1714 and 1716).

In some embodiments the data objects may be deleted but certain metadatamay be retained. If it is decided not delete the data objects, the datais retained and an index in an associated storage manager may be updated(step 1718), for example by updating an index to reflect a new location,data object status, any changes, etc., and return to step 1702. In otherembodiments, if data is deleted from the system, for example, a userpermanently deletes certain data from an application, that associateddata may also be deleted from both primary and secondary storage devicesand associated metabases to free storage space within the system.

Returning to step 1706, it is also determined whether certain dataobjects currently stored in primary storage are to be migrated to one ormore secondary storage devices. If so, an archive file similar to theone described in FIG. 16 or other data structure suitable for transportmay be constructed or created by the source computing device withidentified data objects placed in the payload section and header andindex information added (step 1722). Data may be moved from primary tosecondary storage in predefined chunks which are constructed from sucharchive files, for example, using a data pipe, such as the data pipedescribed in U.S. Pat. No. 6,418,478 titled PIPELINED HIGH SPEED DATATRANSFER MECHANISM.

Next, at step 1724 one or more target secondary storage devices may beidentified. This may involve consulting a storage policy or storagemanager to determine the destination point. In some embodiments,destination maybe determined dynamically, such that it is selected basedon certain system preferences or optimization routines that select astorage device based on storage capacity, availability, data paths tothe destination, etc. Once the secondary storage device(s) areidentified, the archive files may be routed to a media agent, storagemanager, or other system component that supervises the transfer to thetarget secondary storage device (steps 1724 and 1728). This may involveselecting and appropriate data transfer route and ensuring the properresources and are available (e.g., bandwidth) such that the data may becopied with a certain period of time. Supervision may further includeparsing a copy operation into several portions with each portion beingtransferred by certain media agent or other resources, etc, to meetsystem or transfer requirements (e.g., a time window).

Next, the appropriate media within the target storage device may beidentified (step 1730) and the archive files may be transferred from themedia management device to the secondary storage device (step 1732).Such media may be selected from available media already associated witha similar data transfer or may be selected and reserved from anavailable media pool or scratch pool within the storage device. Duringor after the transfer, a media agent index or storage manager indexassociated with the secondary storage device may be updated to reflectthe transfer (step 1733). This may include copying the appropriatemanagement files to the media management index such as offset, media IDfile name or other management information.

At step 1734, any metadata stored in a first metabase associated withthe transferred data objects may also be transferred and used to updatea second metabase associated with the target secondary storage device.Such metadata may be copied from the first metabase to the secondmetabase using network transmission resources. In some embodiments, themetadata in the first metabase may be deleted after it is confirmed themetadata has been copied to the second metabase. In other embodiments,the metadata may remain in both first and second metabases.

At step 1736, it may be determined whether the data objects transferredfrom the primary storage device are to be deleted. If so, the dataobjects and associated metadata in a first metabase may be erased orotherwise designated for overwrite (steps 1738 and 1740). In some cases,a pointer or other reference such as a file stub may be left in theoriginal data location

FIG. 18 presents a generalized block diagram of a hierarchicallyorganized group of storage operation cells in a system to performstorage operations on electronic data in a computer network inaccordance with an embodiment of the present invention. It will beunderstood that although the storage operation cells generally depictedin FIG. 18 have different reference numbers than the storage operationcell 1550 shown in FIG. 15, these cells may be configured the same as orsimilar to the storage cell 1550 as depicted in FIG. 15.

As shown, the system illustrated in FIG. 18 may include a master storagemanager component 1835 and various other storage operations cells. Asshown, the illustrative embodiment in FIG. 18 includes a first storageoperation cell 1840, a second storage operation cell 1845, a thirdstorage operation cell 1850, a fourth storage operation cell 1855, andmay be extended to include nth storage operation cell, if desired (notshown). However, it will be understood this illustration is onlyexemplary and that fewer or more storage operation cells may be presentor interconnected differently if desired.

Storage operation cells, such as the ones shown in FIG. 18 may becommunicatively coupled and hierarchically organized. For example, amaster storage manager 1835 may be associated with, communicate with,and direct storage operations for a first storage operation cell 1840, asecond storage operation cell 1845, a third storage operation cell 1850,and fourth storage operation cell 1855. In some embodiments, the masterstorage manager 1835 may not be part of any particular storage operationcell. In other embodiments (not shown), master storage manager 1835 mayitself be part of a certain storage operation cell. This logicalorganization provides a framework in which data objects, metadata andother management data may be hierarchically organized and associatedwith appropriate devices components (e.g., storage devices).

The storage operation cells may be configured in any suitable fashion,including those which involve distributed or centralized metabases. Forexample, storage operation cell 1840 may include a centralized primarystorage metabase and a centralized secondary storage metabase, storageoperation cell 1845 may include a centralized primary storage metabaseand multiple secondary storage metabases, storage operation cell 1850may include multiple primary storage metabases and a centralizedsecondary storage metabase, and storage operation cell 1855 may includemultiple primary storage metabases and multiple secondary storagemetabases (not shown). However, it will be understood that this ismerely illustrative, and any other suitable configuration may be used ifdesired.

Thus, in operation, master storage manager 1835 may communicate with amanagement agent of the storage manager of the first storage operationcell 1840 (or directly with the other components of first cell 1840)with respect to storage operations performed in the first storageoperation cell 1840. For example, in some embodiments, master storagemanager 1835 may instruct the first storage operation cell 1840 withcertain commands regarding a desired storage operation such as how andwhen to perform particular storage operations including the type ofoperation and the data on which to perform the operation.

Moreover, metabases associated with each storage operation cell maycontain information relating to data and storage operations as describedherein. In some embodiments, master storage manager 1835 may include amaster metabase index or database (not shown) that reflects some or allof the metadata information from the hierarchically subordinate storageoperation cells within the system. This allows the system to consult themaster storage index or database for information relating to data withinthose storage operation cells rather than requiring each cell becontacted of polled directly for such information.

In other embodiments, master storage manager 1835 may track the statusof its associated storage operation cells, such as the status of jobs,system components, system resources, and other items, by communicatingwith manager agents (or other components) in the respective storageoperation cells. Moreover, master storage manager 1835 may track thestatus of its associated storage operation cells by receiving periodicstatus updates from the manager agents (or other components) in therespective cells regarding jobs, system components, system resources,and other items. For example, master storage manager 1835 may usemethods to monitor network resources such as mapping network pathwaysand topologies to, among other things, physically monitor storageoperations and suggest, for example, alternate routes for storing dataas further described herein.

In some embodiments, master storage manager 1835 may store statusinformation and other information regarding its associated storageoperation cells and other system information in an index cache, databaseor other data structure accessible to manager 1835. A presentationinterface included in certain embodiments of master storage manager 1835may access this information and present it to users and system processeswith information regarding the status of storage operations, storageoperation cells, system components, and other information of the system.

In some embodiments, master storage manager 1835 may store and/or trackmetadata and other information regarding its associated storageoperation cells and other system information in an index cache, databaseor other data structure accessible to manager 1835. Thus, during asearch procedure as further described herein, queries can be directed toa specific storage operation cell or cells based on the cell's function,past involvement, routing or other information maintained within thestorage manager or other management component.

As mentioned above, storage operation cells may be organizedhierarchically. With this configuration, storage operation cells mayinherit properties from hierarchically superior storage operation cellsor be controlled by other storage operation cells in the hierarchy(automatically or otherwise). Thus, in the embodiment shown in FIG. 18,storage operation cell 1845 may control or is otherwise hierarchicallysuperior to storage operation cells 1850 and 1855. Similarly, storageoperation cell 1850 may control storage operation cells 1855.Alternatively, in some embodiments, storage operation cells may inheritor otherwise be associated with storage policies, storage preferences,storage metrics, or other properties or characteristics according totheir relative position in a hierarchy of storage operation cells.

Storage operation cells may also be organized hierarchically accordingto function, geography, architectural considerations, or other factorsuseful or desirable in performing storage operations. For example, inone embodiment, storage operation cell 1840 may be directed to createsnapshot copies of primary copy data, storage operation cell 1845 may bedirected to create backup copies of primary copy data or other data.Storage operation cell 1840 may represent a geographic segment of anenterprise, such as a Chicago office, and storage operation cell 1845may represents a different geographic segment, such as a New Yorkoffice. In this example, the second storage operation cells 1845, 1850and 1855 may represent departments within the New York office.Alternatively, these storage operation cells could be further divided byfunction performing various types of copies for the New York office orload balancing storage operations for the New York office.

As another example, and as previously described herein, differentstorage operation cells directed to different functions may also containthe same or a subset of the same set of physical devices. Thus, onestorage operation cell in accordance with the principles of the presentinvention may be configured to perform SRM operations and may containthe same, similar or a subset of the same physical devices as a cellconfigured to perform HSM or other types of storage operations. Eachstorage operation cell may, however, share the same parent or,alternatively, may be located on different branches of a storageoperation cell hierarchy tree. For example, storage operation cell 1845may be directed to SRM operations whereas storage operation cell 1855may be directed to HSM operations. Those skilled in the art willrecognize that a wide variety of such combinations and arrangements ofstorage operation cells are possible to address a broad range ofdifferent aspects of performing storage operations in a hierarchy ofstorage operation cells.

In some embodiments, hierarchical organization of storage operationcells facilitates, among other things, system security and otherconsiderations. For example, in some embodiments, only authorized usersmay be allowed to access or control certain storage operation cells. Forexample, a network administrator for an enterprise may have access tomany or all storage operation cells including master storage manager1835. But a network administrator for only the New York office,according to a previous example, may only have access to storageoperation cells 1845-1855, which form the New York office storagemanagement system.

Moreover, queries performed by the system may be subject to similarrestrictions. For example, depending on access privileges, users may belimited or otherwise excluded from searching a certain cell or cells.For example, a user may be limited to searching information in cells ormetabases within the system that are unrestricted or to those whichspecific access rights have been granted. For example, certain users maynot have privileges to all information within the system. Accordingly,in some embodiments, as a default setting, users may have accessprivileges to information in cells that they interact with. Thus,confidential and sensitive information may be selectively restrictedexcept only to certain users with express privileges (e.g., financial orlegal information, etc.). For example, certain classificationinformation within the metabases in the system may be restricted andtherefore accessed only by those with the proper privileges.

Other restrictions on search criteria may include the scope of thesearch. For example, in a large network with many storage cells mayrequire dedicating significant amounts of resources to perform go globalor comprehensive searches. Thus, if a certain resource threshold isexceeded by a proposed search, the system may prompt that search to bemodified or otherwise cancelled.

In other embodiments master storage manager 1835 may alert a user suchas a system administrator when a particular resource is unavailable orcongested. For example, a particular storage device might be full orrequire additional media. For example, a master storage manager may useinformation from an HSM storage operation cell and an SRM storageoperation cell to present indicia or otherwise alert a user or otherwiseidentify aspects of storage associated with the storage managementsystem and hierarchy of storage operation cells.

Alternatively, a storage manager in a particular storage operation cellmay be unavailable due to hardware failure, software problems, or otherreasons. In some embodiments, master storage manager 1835 (or anotherstorage manager within the hierarchy of storage operation cells) mayutilize the global data regarding its associated storage operation cellsto suggest solutions to such problems when they occur (or act as awarning prior to occurrence). For example, master storage manager 1835may alert the user that a storage device in a particular storageoperation cell is full or otherwise congested, and then suggest, basedon job and data storage information contained in its database, orassociated metabase, or an alternate storage device. Other types ofcorrective actions based an such information may include suggesting analternate data path to a particular storage device, or dividing data tobe stored among various available storage devices as a load balancingmeasure or to otherwise optimize storage or retrieval time. In someembodiments, such suggestions or corrective actions may be performedautomatically, if desired. This may include automatically monitoring therelative health or status of various storage operation cells andsearching for information within the cells of the system relating tosystems or resource performance within that cell (e.g., index, metabase,database, etc.) for use in diagnostics or for suggesting correctiveaction.

In alternate embodiments, HSM and SRM components may be aware of eachother due to a common database or metabase of information that mayinclude normalized data from a plurality of cells. Therefore, in thoseembodiments there is no need for such information to pass through amaster storage manager as these components may be able to communicatedirectly with one another. For example, storage operation cell 1845 maycommunicate directly with storage operation cell 1855 and vice versa.This may be accomplished through a direct communications link betweenthe two or by passing data through intermediate cells.

Moreover, in some embodiments searches may be performed across anumerous storage cells within the hierarchy. For example, a query may beposed to master storage manager 1835 that may pass the query downthrough the hierarchy from cells 1840 to 1845 to 1850 and 1855, etc.This may be accomplished by passing the query form one manager componentof each cell to another, or from one data classification agent toanother, one metabase to another etc. The results may be passed upwardthrough the hierarchy and compiled with other results such that masterstorage manager 1835 has a complete set of results to report. In otherembodiments, each storage manager cell may report results directly tothe requestor or to a designated location.

FIG. 19 presents a flow chart 1900 that illustrates some of the stepsthat may be involved in performing searches for data objects acrosssystems that include multiple primary and secondary storage devices.First, at step 1905, a query seeking certain data may be identified(e.g., from a storage policy, user preference, other process, etc.). Thequery may be analyzed to identify system components, such as clientspotentially having information such as certain data objects or metadatathat may satisfy the query (e.g., by excluding certain clients that areunlikely to have data being sought based on certain query parameterssuch as location, time frame, client or other component, department,application type, or any other criteria used to classify data asdescribed herein, etc. (step 1910)). Results may be presented based on aconfidence factor indicating the likelihood that the results meet thespecified parameters. For example, results substantially satisfying mostor all criteria may be listed first with the confidence factors providedbased on a percentage of the criteria satisfied (e.g., a query thatreturned results having three out of four criteria satisfied may berepresented with a 75% confidence factor etc.). Less relevant resultsmay be listed subsequently with the confidence factor provided based onany suitable relevant factor such as number of parameters satisfied, howclose the match is, etc.

The search process may further involve consulting one or more indexesassociated with the clients to identify where responsive data objects orother copies of client data, etc., may be located within the system. Atstep 1915, it may be determined whether client data objects satisfyingthe query are located in primary storage, secondary storage, or both(e.g., based on index information in a storage manager). This may bebased on polling various storage managers or a master storage managerthat includes information the covers or represents whole system or theportion of system specified for search.

If it is determined that responsive data objects are only located onclient(s) in primary storage, that client may be added to the list ofclients to be searched (step 1955). If it is determined that responsivedata objects are located in secondary storage devices (or other primarystorage locations that may be identified), the system may consult astorage manager index to identify archive files (or other files) basedon certain query parameters such as a specified point in time,origination point, etc., or on index data stored in a storage managerindex identifying archive files or other file associated with the dataobjects.

Next at step 1920, storage managers may be consulted to identifyresponsive archive files. At step 1925, media management components thatmay have handled responsive data objects are be identified. This may bebased on information retrieved from the storage manager index regardingarchive files, e.g., an association of archive files with media agentsand media items. It may then be determined whether the identified mediamanagement components have metadata relating to the identified archivefiles available readily available in an index cache (step 1930).

This may be accomplished by searching for reference information relatingto the identified archive files. If such information is already presentin the cache, responsive data objects may be identified and retrievedusing the index cache information, which may include, offsets and anyfile identifiers, etc., by the media management component, and thesystem may proceed to step 1940 (determine whether another mediamanagement component needs to be analyzed).

If not, the index information may need to be loaded from the secondarystorage device so archive files may be retrieved and accessed. This mayinvolve identifying the particular media on which the index data isstored and upload it to the media management component cache (step1935). In some embodiments, a master storage manager or other componentwith information relating to files may be consulted to identify mediacontaining the responsive information. These media may be mounted indrive or other input/output device and examined to locate the properfiles or data structures. Index information may then be located anduploaded to an index or database associated with the appropriate mediamanagement component (e.g., media agent). This allows the mediamanagement component to locate and retrieve specific data objects on themedia that satisfy the search criteria.

Next, if no further media management components have been identified, alist of media management components to be searched may be compiled (step1945). At step 1950, a list of clients identified as potentially havingresponsive data objects may also be compiled. After a complete list ofsecondary storages devices and clients potentially having responsivedata objects is identified, the associated metabases are queried forthese components, step 1960, and results are returned indicating dataobjects that may satisfy the search criteria, step 1965. In someembodiments, these results may be reviewed and analyzed to ensurerelevance, with only reasonably relevant or responsive data objectsactually being retrieved.

FIG. 20 presents a flow chart 2000 that illustrates some of the stepsthat may be involved in retrieving data objects from secondary storage(or other tiers or other storage locations) in accordance withprinciples of the present invention. This may be accomplished generallyas follows. Certain data (e.g. data objects or associated metadata) fromthe system may need to be retrieved. That data may be requested andcommunicated to the system in the form of a query. The query may be usedto search the system and identify media on which responsive data may belocated. Once located, data satisfying the selection criteria may beuploaded and retrieved and analyzed for relevance, or other action maybe taken. Or, alternatively, the identified data may be moved to othertiers of storage. More specific steps involved in this process may be asfollows.

First, at step 2002, a query seeking certain data may be identified. Thequery may be analyzed to ascertain certain additional information thatmay assist in identifying responsive information such as identifying acertain point in time to search (step 2004). This may involve consultingstorage manager and/or media agent index or database for responsiveinformation relating to a certain point in time. This may also involveconsulting certain metabases for similar information that may beassociated with these or other media management components providingcopy and management functions. Point in time information may bespecified by the user or may be assigned by the system absent a specifictime frame established by the user. For example, a user may specify acertain time range within the query (e.g., a time range, a certain date,all information related to a project since its inception etc.). Thesystem however, may assign a certain time limit based on the query(e.g., such as based on the specifics of the query (e.g., only have datarelating to a certain time frame)), and may limit the search to the timeframe of information present in certain metabases, master storagemanager, or index within the system, and/or poll or otherwisecommunicate with storage devices within the system to determine therange or time frame of available data within the system and present theuser with options for retrieving it (e.g., some, all within a timeframe, etc.)

Next, at step 2006 certain archive files may be identified andassociated media agents (step 2008) that may have been involved intransferring responsive data objects. This may be determined byconsulting a master storage manager or other media management componentindex or metabase to determine whether the archive files have beenhandled by such components. Once the appropriate media agents have beenidentified, it may be determined whether information regarding theidentified archive files is present in a cache or index associated withthe media agents (step 2010). If not, the index information may need tobe uploaded so the appropriate archive files may be retrieved andaccessed. This process may be performed until all identified mediaagents have the appropriate index information loaded and/or until it isdetermined that no responsive information has been handled by the mediaagents and therefore no index information need be uploaded.

Next, at step 2016 data objects satisfying the query criteria may beidentified by searching metabases and/or indexes. In some embodiments,such data objects may be compiled into a list of data objects forpresent or subsequent retrieval. For example, such a list of responsivedata objects may be provided to the user (which may itself satisfy thequery) and then provide the user with the option to actually retrieveall or certain selected identified data objects.

At step 2018, the new destination for the data objects may bedetermined. For example, if certain data objects are being migrated offas part of an ILM operation, the query or other information may indicatethe intent or reason for the search and the data object's destination.This may be useful in determining whether certain data objects areresponsive to search criteria or query. At step 220 it may be determinedwhether the new destination is primary storage (a restore operation) orsecondary or other tier of storage (ILM). Such information may befurther useful in determining whether the data objects are likely tofall within a time frame or category of interest and thus may be usefulin further identifying data objects of interest.

If the identified data objects are moving to other secondary storagetiers, the data objects may be repackaged into form suitable forsecondary storage, which may include repackaging into an archive file,converting to a new format, compressing of the data objects andassociated files, encryption, or any other containerization techniqueknown in the art (step 2022).

Once the data objects are in a suitable format, they may be copied tothe appropriate storage destination by the system. This may beaccomplished by a media agent or media component in conjunction with astorage manager or other media management component that coordinaterouting and the specifics involved with file transfer (step 2024), asfurther described herein. Metadata relating to the copied data objectsmay then be copied to a metabase associated with a computing device atthe destination (step 2026).

For example, metadata relating to the data being copied may be copiedalong with the data to the secondary storage device and may be copied toan index in the media agent or other media management component involvedin the data transfer. This allows the media management component tolocate and retrieve and otherwise manage the stored data. Such metadatamay also useful when performing searches of secondary storage devices(or other tiers) as further described herein. Metadata stored along withthe data on the secondary storage device may be useful to restore orrefresh the media agent index in the case of lost or corrupt data andalso may be transferred along with the data on storage media in the casewhether it is necessary to copy all such data (or actually physicallyrelocate) to another storage device. A master storage manager index ormetabase associated with destination computing device may be updatedreflecting the arrival and new location of the transferred data objectsand/or archive file for system management purposes (step 2034).

In some embodiments, the copied data objects and metadata may be deletedfrom the source location (steps 2028-2032). For example, at step 2028,it may be determined whether the copied data objects should be deletedbased user preferences, storage policy requirements or other systemconstraints such has diminished storage capacity, etc. At steps 2030 and2032 the data objects and records may be deleted. However, a stub,pointer or other referential element may be placed at the same logicallocation to act as a marker for the moved data. This allows subsequentoperations to quickly track down and locate the moved data at its newlocation.

If, however, at step 2020, it is determined that the identified dataobjects are moving to primary storage, accordingly, the data objects maybe reformatted (e.g., unpacked from archive file format) for copying toa computing device (step 2038). Next the unpacked data may be copied toa target computing device along with any associated metadata (steps 2040and 2042). For example, this may involve reading metadata and/or indexinformation from the archive file and repopulating the metabase and/ormanagement component indexes with this information as further describedherein. For example, metadata from the archive file may be retrieved andintegrated into a metabase associated with the target computing deviceincluding information relating to data management and as well as certaincontent and storage information as further described herein with respectto the classification process and metabase population. Thus, sucharchive information may be fully restored to primary storage and anyassociated information, such as metabase information may be searched andretrieved accordingly.

Moreover, information relating to system management may be uploaded andused to repopulate storage management components within the system suchas a storage manager or master storage manager reflecting the return ofthe retrieved data to primary storage (step 2050). For example, astorage manager index may be updated to reflect the presence of theretrieved data along with certain management information such as logicaloffsets and location of the retrieved information such that theretrieved information may be located and accessed. Other managementcomponents, such as a master storage manager may also be updated withthe appropriate identification and location information to reflect thereturn of the retrieved data within the system.

In certain embodiments, the copied data and metadata may be deleted fromthe source location (steps 2044-2048). For example, at step 2044, it maybe determined whether the copied data objects in secondary storageshould be deleted based user preferences, storage policy requirements orother system constraints such has diminished storage capacity, etc. Atsteps 2046 and 2048 the data objects and records may be deleted withinthe system including any metabase or other system management informationassociated with the retrieved data. Storage management components suchas storage managers, media agents may also be updated to reflect theremoval or deletion of such information (step 2050).

Systems and modules described herein may comprise software, firmware,hardware, or any combination(s) of software, firmware, or hardwaresuitable for the purposes described herein. Software and other modulesmay reside on servers, workstations, personal computers, computerizedtablets, personal digital assistants (PDAs), and other devices suitablefor the purposes described herein. In other words, the software andother modules described herein may be executed by a general-purposecomputer, e.g., a server computer, wireless device or personal computer.Those skilled in the relevant art will appreciate that aspects of theinvention can be practiced with other communications, data processing,or computer system configurations, including: Internet appliances,hand-held devices (including PDAs), wearable computers, all manner ofcellular or mobile phones, multi-processor systems, microprocessor-basedor programmable consumer electronics, set-top boxes, network PCs,mini-computers, mainframe computers, and the like. Indeed, the terms“computer,” “server,” “host,” “host system,” and the like are generallyused interchangeably herein, and refer to any of the above devices andsystems, as well as any data processor. Furthermore, aspects of theinvention can be embodied in a special purpose computer or dataprocessor that is specifically programmed, configured, or constructed toperform one or more of the computer-executable instructions explained indetail herein.

Software and other modules may be accessible via local memory, via anetwork, via a browser or other application in an ASP context, or viaother means suitable for the purposes described herein. Aspects of theinvention can also be practiced in distributed computing environmentswhere tasks or modules are performed by remote processing devices, whichare linked through a communications network, such as a Local AreaNetwork (LAN), Wide Area Network (WAN), or the Internet. In adistributed computing environment, program modules may be located inboth local and remote memory storage devices. Data structures describedherein may comprise computer files, variables, programming arrays,programming structures, or any electronic information storage schemes ormethods, or any combinations thereof, suitable for the purposesdescribed herein. User interface elements described herein may compriseelements from graphical user interfaces, command line interfaces, andother interfaces suitable for the purposes described herein. Screenshotspresented and described herein can be displayed differently as known inthe art to input, access, change, manipulate, modify, alter, and workwith information.

Aspects of the invention may be stored or distributed oncomputer-readable media, including magnetically or optically readablecomputer discs, hard-wired or preprogrammed chips (e.g., EEPROMsemiconductor chips), nanotechnology memory, biological memory, or otherdata storage media. Indeed, computer implemented instructions, datastructures, screen displays, and other data under aspects of theinvention may be distributed over the Internet or over other networks(including wireless networks), on a propagated signal on a propagationmedium (e.g., an electromagnetic wave(s), a sound wave, etc.) over aperiod of time, or they may be provided on any analog or digital network(packet switched, circuit switched, or other scheme).

Unless the context clearly requires otherwise, throughout thedescription and the claims, the words “comprise,” “comprising,” and thelike are to be construed in an inclusive sense, as opposed to anexclusive or exhaustive sense; that is to say, in the sense of“including, but not limited to.” As used herein, the terms “connected,”“coupled,” or any variant thereof, means any connection or coupling,either direct or indirect, between two or more elements; the coupling ofconnection between the elements can be physical, logical, or acombination thereof. Additionally, the words “herein,” “above,” “below,”and words of similar import, when used in this application, shall referto this application as a whole and not to any particular portions ofthis application. Where the context permits, words in the above DetailedDescription using the singular or plural number may also include theplural or singular number respectively. The word “or,” in reference to alist of two or more items, covers all of the following interpretationsof the word: any of the items in the list, all of the items in the list,and any combination of the items in the list.

The above detailed description of embodiments of the invention is notintended to be exhaustive or to limit the invention to the precise formdisclosed above. While specific embodiments of, and examples for, theinvention are described above for illustrative purposes, variousequivalent modifications are possible within the scope of the invention,as those skilled in the relevant art will recognize. For example, whileprocesses or blocks are presented in a given order, alternativeembodiments may perform routines having steps, or employ systems havingblocks, in a different order, and some processes or blocks may bedeleted, moved, added, subdivided, combined, and/or modified to providealternative or subcombinations. Each of these processes or blocks may beimplemented in a variety of different ways. Also, while processes orblocks are at times shown as being performed in series, these processesor blocks may instead be performed in parallel, or may be performed atdifferent times.

The teachings of the invention provided herein can be applied to othersystems, not necessarily the system described above. The elements andacts of the various embodiments described above can be combined toprovide further embodiments. Any patents and applications and otherreferences noted above, including any that may be listed in accompanyingfiling papers, are incorporated herein by reference. Aspects of theinvention can be modified, if necessary, to employ the systems,functions, and concepts of the various references described above toprovide yet further embodiments of the invention.

These and other changes can be made to the invention in light of theabove Detailed Description. While the above description describescertain embodiments of the invention, and describes the best modecontemplated, no matter how detailed the above appears in text, theinvention can be practiced in many ways. Details of the system andmethod for classifying and transferring information may varyconsiderably in its implementation details, while still beingencompassed by the invention disclosed herein. As noted above,particular terminology used when describing certain features or aspectsof the invention should not be taken to imply that the terminology isbeing redefined herein to be restricted to any specific characteristics,features, or aspects of the invention with which that terminology isassociated. In general, the terms used in the following claims shouldnot be construed to limit the invention to the specific embodimentsdisclosed in the specification, unless the above Detailed Descriptionsection explicitly defines such terms. Accordingly, the actual scope ofthe invention encompasses not only the disclosed embodiments, but alsoall equivalent ways of practicing or implementing the invention underthe claims.

While certain aspects of the invention are presented below in certainclaim forms, the inventors contemplate the various aspects of theinvention in any number of claim forms. For example, while only oneaspect of the invention is recited as embodied in a computer-readablemedium, other aspects may likewise be embodied in a computer-readablemedium. Accordingly, the inventors reserve the right to add additionalclaims after filing the application to pursue such additional claimforms for other aspects of the invention.

1. A method of classifying data stored within a storage managementsystem, wherein the method is performed by a computing system having aprocessor and memory, the method comprising: receiving two or morecriteria connected via Boolean connectors; receiving one or more userclassifications to be associated with data objects that satisfy the twoor more criteria within the storage management system, wherein the oneor more user classifications are defined by a user, and wherein the oneor more user classifications can describe characteristics of a dataobject and facilitate storage operations for the data object; receivingmultiple data objects during a data management operation and at a datamonitoring agent within the storage management system; determining whichdata objects in the received multiple data objects satisfy the two ormore criteria; automatically associating, by the computing system, theone or more user classifications to the data objects that satisfy thetwo or more criteria; storing in an index the one or more userclassifications as metadata associated with the data objects thatsatisfy the two or more criteria; and performing a data storageoperation based on the one or more user classifications, by analyzingthe index to identify the data objects associated with the one or moreclassifications; and performing the data storage operation on theidentified data objects.
 2. The method of claim 1 wherein receiving 1)two or more criteria connected via Boolean connectors; and 2) one ormore user classifications to be associated with data objects thatsatisfy the two or more criteria within the storage management systemcomprises displaying a graphical user interface for receiving userinput.
 3. The method of claim 1 wherein receiving 1) two or morecriteria connected via Boolean connectors; and 2) one or more userclassifications to be associated with data objects that satisfy the twoor more criteria within the storage management system comprisesdisplaying a list of available classifications.
 4. The method of claim 1wherein receiving 1) two or more criteria connected via Booleanconnectors; and 2) one or more user classifications to be associatedwith data objects that satisfy the two or more criteria within thestorage management system comprises providing an interface for a user tocreate new classifications based on a user's purpose for interactingwith the selected data object.
 5. The method of claim 1 wherein the oneor more classifications comprise classifications related to a source ofat least some of the multiple data objects.
 6. The method of claim 1wherein the one or more classifications comprise classifications relatedto a purpose of at least some of the multiple data objects.
 7. Themethod of claim 1 wherein the one or more classifications compriseclassifications related to intended consumers of at least some of themultiple data objects.
 8. The method of claim 1 wherein the one or moreclassifications comprise classifications related to content of at leastsome of the multiple data objects.
 9. The method of claim 1 wherein theone or more classifications comprise classifications related to apattern of interaction with at least some of the multiple data objects.10. A system for classifying data stored within a storage managementsystem, the system comprising: a processor; a memory; means forreceiving 1) two or more criteria connected via Boolean connectors; and2) one or more user classifications to be associated with data objectsthat satisfy the two or more criteria within the storage managementsystem, wherein the one or more user classifications are defined by auser, and wherein the one or more user classifications can describecharacteristics of a data object and facilitate storage operations onthe data object; means for receiving during a data management operation,and at a data monitoring agent, multiple data objects within the storagemanagement system; means for determining which data objects satisfy thetwo or more criteria; means for automatically associating, by thecomputing system, the one or more user classifications to the dataobjects that satisfy the two or more criteria; means for storing in anindex the one or more user classifications as metadata associated withthe data objects that satisfy the two or more criteria; and means forperforming a data storage operation based on the one or more userclassifications, wherein the means for performing a data storageoperation performs the data storage operation by analyzing the index toidentify the data objects associated with the one or moreclassifications; and performing the data storage operation on theidentified data objects.